嵌套元素MongoDB的组合/叉积
是否有一种方法可以在MongoDB中组合/生成嵌套元素的叉积。 我举了一个例子嵌套元素MongoDB的组合/叉积,mongodb,mongodb-query,aggregation-framework,Mongodb,Mongodb Query,Aggregation Framework,是否有一种方法可以在MongoDB中组合/生成嵌套元素的叉积。 我举了一个例子 { images: [ { name: 'A', url: 'urlA' }, { name: 'B', url: 'urlB' } ], tags: [ { name: 'Tag1', description: 'description1' },
{
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'
}
]
是否可以将生成的文档存储在新集合中?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 }}
]);
输出
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 }}
]);
输出
谢谢你的解决方案!我根据自己的需要对其进行了轻微修改,但概念保持不变。感谢您提供的解决方案!我根据自己的需要稍微修改了一下,但概念还是一样的。