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

use*_*540 6 arrays mongoose mongodb 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
  }]
});
Run Code Online (Sandbox Code Playgroud)

ade*_*asi 6

当您对完整对象感兴趣时,这很简单find

.find({"facebook.id":"<id>", "images.id":<image-id>})
Run Code Online (Sandbox Code Playgroud)

我认为没有办法减少结果中的图像数组。

要更新图像数组中的单个元素,您可以使用:

.update({"facebook.id":"<id>", "images.id":<image-id>}, {$set : {"images.$.main" :false} } );
Run Code Online (Sandbox Code Playgroud)