如何解决在MongoDB中查找重复项,同时比较这些重复项中的某些字段
我有一个数据库
[
{
"_id": 1,"email": "amrit@gmail.com","status": "ACTIVE"
},{
"_id": 2,"email": "abc@gmail.com","status": "INACTIVE"
},{
"_id": 3,"email": "tut@gmail.com",{
"_id": 4,{
"_id": 5,{
"_id": 6,"email": "cat@gmail.com",]
现在,我想根据状态为活动和不活动的电子邮件查找该项目。 我已编写查询来查找类似的重复项。
db.getCollection(‘employees’).aggregate([
{$group: {
_id: {email: “$email”},uniqueIds: {$addToSet: “$_id”},count: {$sum: 1}
}
},{$match: {
count: {“$gt”: 1}
}
}
],{allowDiskUse:true });
这将返回tut@gmail.com和amrit@gmail.com,但我只希望amrit@gmail.com,因为它在数据库中既是ACTIVE还是INACTIVE。 结果应该像
{
"_id": {
"email": "amrit@gmail.com"
},"uniqueIds": [
4,1
]
}
解决方法
尝试以下查询。
db.getCollection("employees").aggregate([
{
$group: {
_id: {
email: "$email"
},uniqueIds: {
$addToSet: "$_id"
},status: {
$addToSet: "$status"
}
}
},{
$match: {
status: {
"$all": [
"ACTIVE","INACTIVE"
]
}
}
},{
$project: {
status: 0
}
}
])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。