【发布时间】:2021-07-06 05:03:21
【问题描述】:
我有 3 个这样的收藏
ModelA :
{
_id :ObjectId("60d2cd964200b320e7dc5c04"),
name : 'Item 1'
}
ModelB :
{
_id :ObjectId("60e3c8e0748d2a18476ceb6f"),
modelA : ObjectId("60d2cd964200b320e7dc5c04"),
field1 : 'field1 item A',
field2 : 'field2 item B',
}
ModelC :
{
_id :ObjectId("60e3c8e0748d2a18476ceb70"),
modelB : ObjectId("60e3c8e0748d2a18476ceb6f"),
status : 'finish'
}
我想获取 ModelA 名称为“项目 1”且 ModelC 状态等于“完成”的所有这些集合的数据, 如何使用聚合加入这 3 个集合?
【问题讨论】:
-
您可以使用聚合$lookup 阶段查询来加入多个集合。
-
@prasad_ 我知道我尝试过使用它,问题是我不知道如何加入 3 个集合。
-
首先,您加入两个集合。然后在生成的数据集上与第三个集合进行另一次联接。请随时在网上搜索更多示例(“mongodb 如何加入三个集合”)。这是一个这样的例子:stackoverflow.com/questions/40789057/…
-
感谢回复,我知道我们可以使用多个 $lookup,在我的情况下,如果 ModelC foreignField 是 Model B _id,我们如何加入。我也知道我们可以先加入两个集合,但我想知道是否只有一个查询的解决方案。
标签: javascript mongodb aggregation-framework