Javascript mongodb-不带本地的聚合查找

Javascript mongodb-不带本地的聚合查找,javascript,mongodb,mongoose,mongodb-query,aggregation-framework,Javascript,Mongodb,Mongoose,Mongodb Query,Aggregation Framework,因此,我有两个ObjectIds,它们位于不同的集合中,我希望将它们合并为输出。因此,这就像在没有任何本地字段的情况下使用$lookup函数一样。如果没有聚合,我可以简单地执行两个.findOne,但这需要两个API调用(这将创建两个连接)。是否有可能在一个月内实现这一目标 因此,如果没有聚合,它看起来就像这样: let main_document = db.findOne({ _id: ObjectId(first) }) let subdocument =

因此,我有两个
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

您可以使用下面的聚合

db.main_document.aggregate([
  { "$match": { "_id": ObjectId(first) }},
  { "$lookup": {
    "from": "subdocument",
    "pipeline": [
      { "$match": { "_id": ObjectId(second) }},
    ],
    "as": "subdocument"
  }},
  { "$unwind": "$subdocument" }
])
您不需要用较新的语法指定
localField
。只需在聚合的子管道中使用
$match

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