在MongoDB中合并同一集合中的两个文档

在MongoDB中合并同一集合中的两个文档,mongodb,merge,nosql,aggregation-framework,aggregation,Mongodb,Merge,Nosql,Aggregation Framework,Aggregation,我一直在尝试合并我的收藏《城市》中的一些重复文档 考虑以下几点: { "_id": 1, "Name": "Santa Monica", "State": "California" }, { "_id": {"$oid":"5ec5fcc993ce00388429278a"}, "Name

我一直在尝试合并我的收藏《城市》中的一些重复文档

考虑以下几点:

{
    "_id": 1,
    "Name": "Santa Monica",
    "State": "California"
},
{
    "_id": {"$oid":"5ec5fcc993ce00388429278a"},
    "Name": "Santa Monica",
    "State": "California",
    "TimeZone": "UTC−8",
    "Population": 90401,
    "State": "California"
}
第二个条目有更多的信息,比如时区和人口。 我只想将两者合并到一个对象中,保留第一个
\u id
,如下所示:

{
    "_id": 1
    "Name": "Santa Monica",
    "State": "California",
    "TimeZone": "UTC−8",
    "Population": 90401,
    "State": "California"
}
我知道我必须使用聚合,但不知道如何使用。该文档缺少一个清晰的示例,说明如何在同一个集合中实现这一点


提前感谢。

您需要按
名称
状态
字段对文档进行分组并合并它们

试试这个:

db.Cities.aggregate([
  {
    $group: {
      _id: {
        "Name": "$Name",
        "State": "$State"
      },
      data: {
        $push: "$$ROOT"
      }
    }
  },
  {
    "$replaceWith": {
      "$mergeObjects": {
        "$reverseArray": "$data"
      }
    }
  }
])

注意:
$reversearlay
允许翻转分组数组