有没有办法在MongoDB中组合/生成嵌套元素的交叉产品。 作为一个例子,我有
{
images:
[
{
name: 'A',
url: 'urlA'
},
{
name: 'B',
url: 'urlB'
}
],
tags: [
{
name: 'Tag1',
description: 'description1'
},
{
name: 'Tag2',
description: 'description2'
}
]
}
首选结果应为
[
{
url: 'urlA',
name: 'Tag1'
},
{
url: 'urlA',
name: 'Tag2'
},
{
url: 'urlB',
name: 'Tag1'
},
{
url: 'urlB',
name: 'Tag2'
}
]
是否可以将生成的文档存储在新集合中?
答案 0 :(得分:4)
MongoDB查询
db.test.aggregate([{ $unwind: '$images'},{ $unwind: '$tags'}, { "$group" : { "_id" : { "url": "$images.url","name": "$tags.name"}, }
},
{ "$group" : { "_id" : null,
"result": { "$addToSet" : { "url" : "$_id.url",
"name" : "$_id.name" }
},
}
},
{"$project":{
"_id":0,
"result": 1,
}
},]);
<强>输出强>
{
"result": [
{
"url": "urlA",
"name": "Tag1"
},
{
"url": "urlA",
"name": "Tag2"
},
{
"url": "urlB",
"name": "Tag1"
},
{
"url": "urlB",
"name": "Tag2"
}
]}