在比较那些重复项中的某些字段时在 MongoDB 中查找重复项
Find Duplicate In MongoDB While Comparing Some Field In those Duplicate Items
我有一个数据库
[
{
"_id": 1,
"email": "amrit@gmail.com",
"status": "ACTIVE"
},
{
"_id": 2,
"email": "abc@gmail.com",
"status": "INACTIVE"
},
{
"_id": 3,
"email": "tut@gmail.com",
"status": "ACTIVE"
},
{
"_id": 4,
"email": "amrit@gmail.com",
"status": "INACTIVE"
},
{
"_id": 5,
"email": "tut@gmail.com",
"status": "ACTIVE"
},
{
"_id": 6,
"email": "cat@gmail.com",
"status": "ACTIVE"
},
]
现在我想根据电子邮件查找项目,其状态为 ACTIVE 和 INACTIVE。
我已经编写了查询来查找这样的重复项。
db.getCollection(‘employees’).aggregate([
{$group: {
_id: {email: “$email”},
uniqueIds: {$addToSet: “$_id”},
count: {$sum: 1}
}
},
{$match: {
count: {“$gt”: 1}
}
}
], {allowDiskUse:true });
This return tut@gmail.com 和 amrit@gmail.com 但我只想要 amrit@gmail.com 因为它在数据库中既是活动的又是非活动的。
结果应该类似于
{
"_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
}
}
])
这是给你的 MongoPlayground。
我有一个数据库
[
{
"_id": 1,
"email": "amrit@gmail.com",
"status": "ACTIVE"
},
{
"_id": 2,
"email": "abc@gmail.com",
"status": "INACTIVE"
},
{
"_id": 3,
"email": "tut@gmail.com",
"status": "ACTIVE"
},
{
"_id": 4,
"email": "amrit@gmail.com",
"status": "INACTIVE"
},
{
"_id": 5,
"email": "tut@gmail.com",
"status": "ACTIVE"
},
{
"_id": 6,
"email": "cat@gmail.com",
"status": "ACTIVE"
},
]
现在我想根据电子邮件查找项目,其状态为 ACTIVE 和 INACTIVE。 我已经编写了查询来查找这样的重复项。
db.getCollection(‘employees’).aggregate([
{$group: {
_id: {email: “$email”},
uniqueIds: {$addToSet: “$_id”},
count: {$sum: 1}
}
},
{$match: {
count: {“$gt”: 1}
}
}
], {allowDiskUse:true });
This return tut@gmail.com 和 amrit@gmail.com 但我只想要 amrit@gmail.com 因为它在数据库中既是活动的又是非活动的。 结果应该类似于
{
"_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
}
}
])
这是给你的 MongoPlayground。