mongodb-没有本地的聚合查找

时间:2019-02-01 05:08:19

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

因此,我有两个不同集合中的ObjectId,我希望将其合并为输出。因此,就像使用$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

1 个答案:

答案 0 :(得分:3)

您可以使用以下汇总

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

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