如何制作;加入;使用MongoDB创建对象ID数组

如何制作;加入;使用MongoDB创建对象ID数组,mongodb,nosql,Mongodb,Nosql,在使用MongoDB聚合框架进行此查询时,我面临一些困难 我有一个订单集合,其中包含来自产品的对象ID数组示例: { _id: "5759b760aeacbfa420943d84", products: [ "57718a2c9473f30ae88d1875", "57727d988d7e581809b454a1", "577bda7da756e2180507a944" ] } 以下是我的产品收藏中的一个文档示例: { _id: "57718a2c947

在使用MongoDB聚合框架进行此查询时,我面临一些困难

我有一个订单集合,其中包含来自产品的对象ID数组示例:

{
  _id: "5759b760aeacbfa420943d84",
  products: [
    "57718a2c9473f30ae88d1875",
    "57727d988d7e581809b454a1",
    "577bda7da756e2180507a944"
  ]
}
以下是我的产品收藏中的一个文档示例:

{
  _id: "57718a2c9473f30ae88d1875",
  name: "Soap A"
}

如何在订单中进行聚合查询,以获取包含的产品文档列表?

简短的回答是您不能。 聚合仅对一个集合有效

但是,如果您使用的是mongoose,则可以使用查询和“.populate”方法

i、 e

有关填充的更多详细信息

但这只适用于nodejs应用程序,不过您使用的是一种语言。请看一下mongo的一些ORM框架


我希望这会有所帮助

,但Mongoose是否会在内部进行另一个查询来进行组装,对吗?@LeandroCurioso解决这个问题的一种方法是修改订单模型以包含产品所需的数据(反规范化),另一种方法是在聚合完成后进行查找
CollectionModel.find({}).populate('products').exec(function(err, items) {})