У меня есть некоторые данные, продукты, и они имеют значения атрибутов и id
этого атрибута. Этикетки атрибутов находятся в одной коллекции, но с type: "attribute"
вместо `type:" product ". Мне нужно присоединиться к ним, поэтому у меня есть продукты, включая метку атрибутов и их значений.
У меня есть очень простые выборочные данные ей: https://gist.github.com/flowl/632243bca8f2907a672f66920ea0f793
Моя агрегация выглядит следующим образом:
db.input.aggregate([
{
$unwind: "$attributes"
},
{
$lookup: {
from: "input",
localField: "attributes.id",
foreignField: "attributeId",
as: "attributeLabels"
}
},
{
$match: { "output": { $ne: [] } }
},
{
$group: {
_id: "$productId",
product: { "$first": "$$CURRENT"}
}
},
{ $group : { _id : "$product._id", data: { $push: "$$ROOT" } } }
]);
Проблема заключается в том, я хочу, чтобы переформатировать вывод из этого:
{
"_id" : ObjectId("5899925339db9185f13432c4"),
"data" : [
{
"_id" : 111,
"product" : {
"_id" : ObjectId("5899925339db9185f13432c4"),
"type" : "product",
"productId" : 111,
"attributes" : {
"id" : 1,
"value" : "L"
},
"attributeLabels" : [
{
"_id" : ObjectId("5899927539db9185f13432cb"),
"type" : "attribute",
"attributeId" : 1,
"label" : "Size"
}
]
}
}
]
}
На это:
{
"_id" : ObjectId("5899925339db9185f13432c4"),
"type" : "product",
"productId" : 111,
"attributes" : [
{
"_id" : ObjectId("5899927539db9185f13432cb"),
"type" : "attribute",
"attributeId" : 1,
"label" : "Size",
"value" : "L"
}
]
}
Какова ваша Монго дб версия? – Veeram
@Veeram db.version() - 3.4.2 – DanFromGermany