我正在努力使用Mongo DB创建一个查询,该查询将2个集合结合在一起以匹配子元素。
最终,我正在尝试查找与_id
中的collection_A
和po_data.vendor._id
中的collection_C
匹配的所有记录。要查找记录,您首先必须加入collection_B
。
如何将_id
中的collection_A
匹配到`collection_C中的po_data.vendor._id
的所有记录。
查询在collection_A
中查找,并返回如下记录:
{
"_id" : ObjectId("5e80f762189577230c65d3cb"),
}
我要加入的第一条记录是-collection_B
:
{
"_id" : ObjectId("5efd0984be81418cc59f3ff9"),
"activeRecord" : ObjectId("5efd0984be81418cc59f3ff8"),
"revisions" : [
ObjectId("5efd0984be81418cc59f3ff8")
]
}
其加入的记录是-collection_C
:
{
"_id" : ObjectId("5efd0984be81418cc59f3ffa"),
"revision_uLID" : ObjectId("5efd0984be81418cc59f3ff8"),
"parentRecord_uLID" : ObjectId("5efd0984be81418cc59f3ff9"),
"po_data" : {
"vendor" : {
"_id" : "5e80f762189577230c65d3cb",
}
}
activeRecord
和revision_uLID
这两个名称相互结合。
到目前为止,我已经尝试了以下方法,但是似乎无法使其正常工作。
const result = await findr.aggregate(
[
{
$lookup: {
from: "collection_B",
let: {
"activeRecord": "$activeRecord",
'_id': '$_id'
},
pipeline: [{
$match: {
$expr: {
$eq: ["$activeRecord", "$$activeRecord"]
}
}
},
{
$lookup: {
from: "collection_C",
"pipeline": [{
"$match": {
"$expr": {
"$eq": ["$revision_uLID", "$$activeRecord"]
}
}
}]
}
},
],
as: "vendors"
}
},
{
$project: {
_id: 1,
vendors: 1
}
},
]).toArray()