导读:在使用MongoDB时,我们经常需要对多个键进行去重操作 。本文将介绍如何利用MongoDB的聚合框架实现多个键去重 , 并通过实例演示具体的操作步骤 。
1. 使用$group聚合操作符
可以使用$group聚合操作符对多个键进行分组,并且只保留每个组中的一个文档 。例如,假设我们有一个集合包含以下文档:
{
"name": "Alice",
"age": 25,
"gender": "female"
},
"name": "Bob",
"age": 30,
"gender": "male"
"name": "Charlie",
}
如果我们想要按照年龄和性别进行去重 , 只保留每个不同组合的第一个文档 , 可以使用以下聚合管道:
db.collection.aggregate([
{
$group: {
_id: { age: "$age", gender: "$gender" },
doc: { $first: "$$ROOT" }
}
},
{ $replaceRoot: { newRoot: "$doc" } }
])
这个聚合管道会输出以下结果:
2. 使用$addToSet聚合操作符
另一种方法是使用$addToSet聚合操作符来创建一个包含所有不同值的数组 。例如,假设我们有一个集合包含以下文档:
"hobbies": ["reading", "swimming"]
"hobbies": ["swimming", "cooking"]
"hobbies": ["reading", "cooking"]
如果我们想要按照爱好进行去重 , 可以使用以下聚合管道:
{ $unwind: "$hobbies" },
_id: null,
【mongodb删除某个字段 mongodb多个键去重】hobbies: { $addToSet: "$hobbies" }
}
{ "hobbies": [ "reading", "swimming", "cooking" ] }
总结:以上两种方法都可以实现多个键的去重操作,具体选择哪一种方法取决于你的需求 。使用$group聚合操作符可以保留每个组中的一个文档,而使用$addToSet聚合操作符则可以创建一个包含所有不同值的数组 。