【问题标题】:mongodb - aggregate lookup without localmongodb - 没有本地的聚合查找
【发布时间】:2019-06-25 15:48:58
【问题描述】:

所以我有两个 ObjectIds 位于不同的集合中,我想将它们合并为输出。所以这就像在没有任何本地字段的情况下使用 $lookup 函数一样。如果没有聚合,我可以简单地执行两个.findOne,但这需要两个 API 调用(这将创建两个连接)。有没有可能一次性实现?

所以如果没有聚合,它看起来就像这样:

let main_document =
    db.findOne({
        _id: ObjectId(first)
    })

let subdocument =
    db.findOne({
        _id: ObjectId(second)
    })

main_document.subdocument = subdocument

return main_document

【问题讨论】:

    标签: javascript mongodb mongoose mongodb-query aggregation-framework


    【解决方案1】:

    你可以使用下面的聚合

    您无需在较新的$lookup 语法中指定localField。只需在$lookup聚合的子管道内使用$match

    db.main_document.aggregate([
      { "$match": { "_id": ObjectId(first) }},
      { "$lookup": {
        "from": "subdocument",
        "pipeline": [
          { "$match": { "_id": ObjectId(second) }},
        ],
        "as": "subdocument"
      }},
      { "$unwind": "$subdocument" }
    ])
    

    【讨论】:

      猜你喜欢
      • 2020-11-23
      • 1970-01-01
      • 2018-07-09
      • 2017-11-08
      • 2017-05-05
      • 2020-06-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多