【发布时间】:2023-03-27 19:50:01
【问题描述】:
我在 mongodb 中有 100 万个文档。我想查找和取消设置相同的字段。你能给我一个方法或一个想法吗?
我的文件是这样的:
{
"regions" : [
{"id" : "1", "name" : "World"},
{"id" : "10370","name" : "South America"},
{"id" : "1426","name" : "Suriname"}
]
}
{
"regions" : [
{"id" : "1", "name" : "World"},
{"id" : "10370","name" : "South America"},
{"id" : "1426","name" : "Suriname"}
]
}
{
"regions" : [
{"id" : "1","name" : "World"},
{"id" : "1734","name" : "USA"},
{"id" : "1136","name" : "Pennsylvania"},
{"id" : "16962","name" : "Greater Philadelphia area"},
]
}
{
"regions" : [
{"id" : "1","name" : "World"},
{"id" : "1734","name" : "USA"},
{"id" : "1136","name" : "Pennsylvania"},
{"id" : "16962","name" : "Greater Philadelphia area"},
]
}
{
"regions" : [
{"id" : "1","name" : "World"},
{"id" : "34964","name" : "Oceania"},
{"id" : "15","name" : "Australia"},
{"id" : "470","name" : "Western Australia"},
{"id" : "36282","name" : "Perth"},
]
}
我该如何改变:
{
"regions" : [
{"id" : "1", "name" : "World"},
{"id" : "10370","name" : "South America"},
{"id" : "1426","name" : "Suriname"}
]
}
{
"regions" : [
{"id" : "1","name" : "World"},
{"id" : "1734","name" : "USA"},
{"id" : "1136","name" : "Pennsylvania"},
{"id" : "16962","name" : "Greater Philadelphia area"},
]
}
{
"regions" : [
{"id" : "1","name" : "World"},
{"id" : "34964","name" : "Oceania"},
{"id" : "15","name" : "Australia"},
{"id" : "470","name" : "Western Australia"},
{"id" : "36282","name" : "Perth"},
]
}
提前感谢您的回答和关注。
更新: 我正在尝试这段代码:
db.collection.aggregate(
{"$group":{"_id": {"id": "$regions.id","name": "$regions.name"},}},
{"$group":{"_id":ObjectId(),"regions": { "$push": {"id": "$_id.id","name": $_id.name"}}}},
{"$unwind": "$regions"},
{"$out": "newcollection"}
)
它给出了这个错误: "errmsg" : "insert for $out failed: { connectionId: 111, err: \"E11000 duplicate key error collection: collection.tmp.agg_out.12 index: id dup key: { : ObjectId( '5767f378ff8f5e9302d95bc8') }\", 代码: 11000, n: 0, ok: 1.0 }",
我怎样才能给一个唯一的键?
【问题讨论】:
-
不清楚你想在这里做什么。是否要从集合中删除重复项?
-
是的,我想删除重复的字段。
标签: mongodb mongodb-query