2016-11-14 94 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而最终得到所有可能不相关的内容。