Я изо всех сил пытаюсь создать запрос с использованием Mon go DB, который объединяет 2 коллекции вместе, чтобы соответствовать дочернему элементу.
В конечном итоге я пытаюсь найти все записи, соответствующие _id
в От collection_A
до po_data.vendor._id
в collection_C
. Чтобы найти записи, вам сначала нужно присоединиться к collection_B
.
Как мне вернуть все записи, соответствующие _id
в collection_A
на po_data.vendor._id
в `collection_ C.
Запрос смотрит в 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()