mongodb - 没有本地的聚合查找
Posted
技术标签:
【中文标题】mongodb - 没有本地的聚合查找【英文标题】:mongodb - aggregate lookup without local 【发布时间】:2019-06-25 15:48:58 【问题描述】:所以我有两个 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
【问题讨论】:
【参考方案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"
])
【讨论】:
以上是关于mongodb - 没有本地的聚合查找的主要内容,如果未能解决你的问题,请参考以下文章