如何在此架构中按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 :(得分:1)
当您对完整对象感兴趣时,它是一个简单的find
:
.find({"facebook.id":"<id>", "images.id":<image-id>})
我认为没有办法减少结果中的图像数组。
要更新图像数组中的单个元素,您可以使用:
.update({"facebook.id":"<id>", "images.id":<image-id>}, {$set : {"images.$.main" :false} } );
答案 1 :(得分:0)
userSchema .find({facebook.id: "some ID",{ "images.id": { $in: [ id1, id2, ...idn] }}
由于图像在文档中,因此您可以使用相同的ID,但每次查询时都应记住,您发送一些其他参数(如facebook.id或facebook.email)以及图像ID来检索它们。否则,您最终只会因为您决定为图像保留相同的ID而获得所有可能无关紧要的内容。