mongoose query:在数组中按id查找对象

时间:2016-11-14 20:00:47

标签: arrays mongodb mongoose objectid

如何在此架构中按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
  }]
});

2 个答案:

答案 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而获得所有可能无关紧要的内容。