【问题标题】:How to make the "join" of an array of objects ids with MongoDB如何使用 MongoDB 将对象 id 数组“加入”
【发布时间】:2017-06-27 21:30:11
【问题描述】:

我在使用 MongoDB 聚合框架进行此查询时遇到了一些困难。

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

{
  _id: "5759b760aeacbfa420943d84",
  products: [
    "57718a2c9473f30ae88d1875",
    "57727d988d7e581809b454a1",
    "577bda7da756e2180507a944"
  ]
}

这是我的产品收藏中的一个文档的示例:

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

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

【问题讨论】:

    标签: mongodb nosql


    【解决方案1】:

    你不能的简短答案。 聚合仅适用于一个集合。

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

    CollectionModel.find({}).populate('products').exec(function(err, items) {}) 
    

    关于填充http://mongoosejs.com/docs/populate.html的更多详细信息

    但这仅适用于 nodejs 应用程序,但您使用的语言请查看一些用于 mongo 的 ORM 框架

    希望对你有帮助

    【讨论】:

    • 但是 Mongoose 在内部是否会进行另一个查询来组装它?
    • @LeandroCurioso 解决此问题的一种方法是修改订单模型以包含您需要的产品数据(去规范化),另一种方法是在聚合完成后进行查找
    猜你喜欢
    • 2014-08-28
    • 2019-10-01
    • 2016-08-21
    • 1970-01-01
    • 2018-06-22
    • 2021-11-06
    • 1970-01-01
    • 2021-06-04
    • 1970-01-01
    相关资源
    最近更新 更多