Мне нужно создать агрегацию, которая запускается на нескольких коллекциях и может всплывать, искать. У меня 3 коллекции: Переделки:
{
"_id" : ObjectId("5d64d2bf48dd17387d77d27a"),
"name" : "Rework_1",
"kind" : 1,
"order" : ObjectId("5d649838c563ef36c17b62ed"),
},
{
"_id" : ObjectId("5da9586911e192081ee1c6be"),
"name" : "Rework_2",
"kind" : 1,
"order" : ObjectId("5d352477e340044098d5bb4e"),
}
Ремонт:
{
"_id" : ObjectId("5d54f04dbe5e6275e53a551e"),
"name" : "Repair_1",
"kind" : 2,
"order" : ObjectId("5d352477e340044098d5bb4e"),
},
{
"_id" : ObjectId("5d23f4ba0df6d8476c8384b2"),
"name" : "Repair_2",
"kind" : 2,
"order" : ObjectId("5d649838c563ef36c17b62ed"),
}
Заказы:
{
"_id" : ObjectId("5d649838c563ef36c17b62ed"),
"name" : "Order_1_abc",
},
{
"_id" : ObjectId("5d352477e340044098d5bb4e"),
"name" : "Order_2_xyz"
}
==========================
Условие ввода: Order_2
Результат:
{
"_id" : ObjectId("5da9586911e192081ee1c6be"),
"name" : "Rework_2",
"kind" : 1,
"order" : {
"_id" : ObjectId("5d352477e340044098d5bb4e"),
"name" : "Order_2_xyz"
}
},
{
"_id" : ObjectId("5d54f04dbe5e6275e53a551e"),
"name" : "Repair_1",
"kind" : 2,
"order" : {
"_id" : ObjectId("5d352477e340044098d5bb4e"),
"name" : "Order_2_xyz"
}
}
Но у меня естьтолько что включены 2 коллекции, но нельзя добавить условия в коллекцию заказов:
db.getCollection('reworks').aggregate( [
{ "$limit": 1 },
{ "$project": { _id: "$$REMOVE" } },
{ "$lookup": { "from": "repairs", "pipeline": [], "as": "ref_repairs" } },
{ "$lookup": { "from": "reworks", "pipeline": [], "as": "ref_reworks" } },
{ "$project": { "union": { "$concatArrays": ["$ref_repairs", "$ref_reworks"] } } },
{ "$unwind": "$union" },
{ "$replaceRoot": { newRoot: "$union" } }
]
)
===>
{
"_id" : ObjectId("5d64d2bf48dd17387d77d27a"),
"name" : "Rework_1",
"kind" : 1,
"order" : ObjectId("5d649838c563ef36c17b62ed"),
},
{
"_id" : ObjectId("5da9586911e192081ee1c6be"),
"name" : "Rework_2",
"kind" : 1,
"order" : ObjectId("5d352477e340044098d5bb4e"),
},
{
"_id" : ObjectId("5d54f04dbe5e6275e53a551e"),
"name" : "Repair_1",
"kind" : 2,
"order" : ObjectId("5d352477e340044098d5bb4e"),
},
{
"_id" : ObjectId("5d23f4ba0df6d8476c8384b2"),
"name" : "Repair_2",
"kind" : 2,
"order" : ObjectId("5d649838c563ef36c17b62ed"),
}