2016-11-14 171 views
1

如何在此架構中通過id查找圖像。我有用戶的ID和我正在尋找的圖像的ID。這樣做的最好方法是什麼?在這種情況下做所有圖像都有不同的ID,或者它們可能具有相同的ID,因爲它們不屬於同一個用戶?貓鼬查詢:通過數組中的id查找對象

我的模式是這樣的:

var userSchema = new Schema({ 
    local: { 
    email: String, 
    password: String 
    }, 
    facebook: { 
    id: String, 
    token: String, 
    email: String, 
    name: String 
    }, 
    name: String, 
    about: String, 
    images: [{ 
    id: Schema.ObjectId, 
    link: String, 
    main: Boolean 
    }] 
}); 
+0

您有興趣完整的對象或只是圖像與指定的ID? – adebasi

+0

我會優先考慮一個完整的對象,只有一個圖像具有通過的ID。 – user3888540

回答

1

當你感興趣的完整的對象是一個簡單的find

.find({"facebook.id":"<id>", "images.id":<image-id>}) 

我不認爲有降低的結果,圖像陣列的方式。

要更新圖像陣列在一個單一的元素,您可以使用此:

.update({"facebook.id":"<id>", "images.id":<image-id>}, {$set : {"images.$.main" :false} }); 
+0

以及那是我的問題。我需要更新一個圖像中的一個字段,而不知道如何獲取該圖像。任何其他的tough??我欣賞幫助。 – user3888540

+0

查看更新後的帖子 – adebasi

0
userSchema .find({facebook.id: "some ID",{ "images.id": { $in: [ id1, id2, ...idn] }} 

因爲圖像是在文檔中,你可以,但是你查詢你應該保持在發送的一些其它參數,如Facebook的頭腦,每次都有相同的ID .id或facebook.email以及圖像ID來檢索它們。否則,只會因爲您決定保留圖像的相同ID而最終得到所有可能不相關的內容。