일부 데이터, 제품이 있으며 속성 값과 해당 속성의 id
이 있습니다. 속성의 레이블은 동일한 컬렉션에 있지만 'type : "product"대신 type: "attribute"
입니다. 나는 그것들에 가입 할 필요가있어서 나는 속성과 그것들의 가치의 레이블을 포함하는 제품을 가지고있다.
나는 아주 간단한 샘플 데이터이 그녀의 : 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"
}
]
}
당신의 몽고 DB를 버전은 무엇입니까? – Veeram
@Veeram db.version() - 3.4.2 – DanFromGermany