如何对匹配多个字段的所有文档进行分组 mongodb

How to group all documents matching for multiple fields mongodb

我是 MongoDB 的新手!

我只需要提取具有相同地址、类型和 ID 的所有文档。地址中将只有一个地址。其他属性可以有不同的值。例如,请参见下面的测试文档:

{
   "Id" : "123",
   "type" : "T1",
   "addresses" : [ 
       {
        "address" : {
            "line1" : "line 1 ...",
            "line2" : "line 2...",
            "state" : "state1...",
            "city" : "city1...",
            "zip" : "123456"
        }
       }
  ],
   "email" : "test1@gmail.com",
   "salary" : ""
}

例如我有以下文件,第一个值是类型,第二个是 ID,第三个是地址,第四个是电子邮件等等:

  doc1 - t1  1  address1  email1 ... 
  doc2 - t1  2  address2  email2 ...
  doc3 - t1  1  address1  email3 ...
  doc4 - t1  1  address1  email4 ...
  doc5 - t1  2  address2  email5 ...
  doc6 - t1  1  address1  email6 ...


outcome: [ [doc1, doc3, doc4, doc6], [doc2, doc5] ]

此处的 doc1、doc3、doc4、doc6 具有相同的 ID、类型和地址。与 doc2、doc5 具有相同的 ID、类型和地址。

有人可以建议如何在 MongoDB 中实现这一目标吗?

阅读 Mongo 聚合框架和一些研发后,我能够使用以下方法实现此目的:

db.getCollection('test_collection').aggregate([  
{
    $group: {
        _id: { type: "$type", id:"$Id", line1: "$addresses.0.address.line1" ... },
        docGroups: { $addToSet: "$$ROOT" }
    }
}
]);