Mongodb在第二列匹配的地方找到重复项

时间:2019-05-08 20:07:27

标签: mongodb mongodb-query aggregation-framework

我想在mongodb数据库中找到重复的文档,并且我也实现了其中的一部分,可以说我的文档是这样的

{
"_id" : ObjectId("5900b01b2ce12a2383328e61"),
"Bank Name" : "Seaway Bank and Trust Company",
"City" : "Chicago",
"ST" : "IL",
"CERT" : 19328,
"Acquiring Institution" : "State Bank of Texas",
"Closing Date" : "27-Jan-17",
"Updated Date" : "17-Feb-17"
} 

我已经写过这样的查询:

 db.list.aggregate([
{$group: {
    _id: {CERT: "$CERT"},
    uniqueIds: {$addToSet: "$_id"},
    count: {$sum: 1}
    }
},
{$match: { 
    count: {"$gt": 1}
    }
},
{$sort: {
    count: -1
    }
}
]);

因此,这为我提供了在多个正确的文档中重复了 CERT 的所有文档的ID,但除此之外,我想添加 ST em> 不等于 IL 。我怎样才能做到这一点 。

请帮助!

2 个答案:

答案 0 :(得分:1)

您只需在执行$match之前添加另一个带有 ST 不等于 IL $group,它将忽略与"ST" == "IL"的交易:

最终查询:

db.list.aggregate([
{
        $match : {
            "ST" : {$ne : "IL"}
        }
},
{
    $group: {
        _id: {CERT: "$CERT"},
        uniqueIds: {$addToSet: "$_id"},
        count: {$sum : 1}
    }
},
{
    $match: { 
        count: {"$gt": 1}
    }
},
{
    $sort: {
        count: -1
    }
}
]);

希望这会有所帮助!

答案 1 :(得分:0)

您可以使用

 db.list.aggregate([
{$group: {
    _id: {CERT: "$CERT",ST:{$ne:"IL"}},
    uniqueIds: {$addToSet: "$_id"},
    count: {$sum: 1}
    }
},
{$match: { 
    count: {"$gt": 1}
    }
},
{$sort: {
    count: -1
    }
}
]);

让我知道它是否无效或您需要更多帮助