mongodb - 没有本地的聚合查找

A. *_*Lau 2 javascript mongoose mongodb mongodb-query aggregation-framework

所以我有两个ObjectId位于不同集合中的 s,我希望将其合并为输出。所以这就像使用$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
Run Code Online (Sandbox Code Playgroud)

Ash*_*shh 6

您可以使用以下聚合

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

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