猫鼬。在包含所有嵌套集合的集合中查找所有字段

时间:2019-10-13 19:56:11

标签: mongodb mongoose

我们有2个收藏

  1. 产品
  2. 照片

“产品”集合中的一个文档如下:

{
  id: ObjectID
  name: string
  price: number
  photo: ObjectID // A ref to Photos collection
}

“照片”收藏夹中的文档:

{
  id: ObjectID
  path: string 
}

我想从Products集合中找到所有带有ref字段的字段。

所以我希望结果是

{
  id: ObjectID
  name: string
  price: number
  photo: {
    id: ObjectID
    path: string
  }
}

当我使用Product.find()时,只会导致:

{
  id: ObjectID
  name: string
  price: number
  photo: ObjectID
}

1 个答案:

答案 0 :(得分:1)

在这种情况下,您需要使用填充方法。

您可以将其用作模型本身的函数:

productSchema.pre(/^find/, function(next) { this.populate('photo').populate({ path: 'path', }); next(); });

请务必在最后打next(),否则您将被卡住。

这在Mongoose中称为“预”中间件,可帮助自动检索任何查找方法(findById,findOne等)上的数据。

https://mongoosejs.com/docs/middleware.html

https://mongoosejs.com/docs/populate.html