mongodb - 在 MongoDB 中合并同一集合中的两个文档
问题描述
我一直在尝试在我的名为Cities的集合中合并一些重复的文档。
考虑以下:
{
"_id": 1,
"Name": "Santa Monica",
"State": "California"
},
{
"_id": {"$oid":"5ec5fcc993ce00388429278a"},
"Name": "Santa Monica",
"State": "California",
"TimeZone": "UTC−8",
"Population": 90401,
"State": "California"
}
第二个条目确实包含更多信息,例如 TimeZone 和 Population。我只想将两者合并到一个对象中,_id
像这样保留第一个对象:
{
"_id": 1
"Name": "Santa Monica",
"State": "California",
"TimeZone": "UTC−8",
"Population": 90401,
"State": "California"
}
我知道我必须使用聚合但不知道如何。该文档缺少一个明确的示例来说明如何在同一个集合中执行此操作。
提前致谢。
解决方案
您需要按Name
和State
字段对文档进行分组并合并它们。
试试这个:
db.Cities.aggregate([
{
$group: {
_id: {
"Name": "$Name",
"State": "$State"
},
data: {
$push: "$$ROOT"
}
}
},
{
"$replaceWith": {
"$mergeObjects": {
"$reverseArray": "$data"
}
}
}
])
注意: $reverseArray
允许翻转分组数组
推荐阅读
- php - 如何从数组列表中的json数组中获取特定值
- python - 多个下拉菜单上的 ipywidgets SelectMultiple
- python - 在python中将字符串压缩为数字
- php - Firebird 的 blob 大小是否只有 32kb?
- python - 如何枚举标记python中列表的元素?
- c++ - 在 main() 函数中将函数的静态数组返回到另一个数组
- mongodb - 出于分析和调查目的,维护我的 MongoDB 的编辑副本的最佳方法是什么?
- javascript - 当我点击它时,按钮颜色不会改变?
- python - Python - 拆分制表符分隔文件并转换为数据框
- java - Flyway 配置 java.lang.ClassNotFoundException: org.flyway.core.Flyway