嵌套元素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' },

是否有一种方法可以在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'
    }
]
是否可以将生成的文档存储在新集合中?

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 }}
]);
输出


谢谢你的解决方案!我根据自己的需要对其进行了轻微修改,但概念保持不变。感谢您提供的解决方案!我根据自己的需要稍微修改了一下,但概念还是一样的。