簡體   English   中英

mongodb - 沒有本地的聚合查找

[英]mongodb - aggregate lookup without local

所以我有兩個不同集合的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

您可以使用以下聚合

您不需要在較新的$lookup語法中指定localField 只需在$lookup聚合的子管道中使用$match

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM