Mongodb находит дубликаты, где совпадает второй столбец - PullRequest
0 голосов
/ 08 мая 2019

Я хочу найти дубликаты документов в моей базе данных 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 повторяется в более чем одном документе, который является правильным, но в дополнение к этому, я хочу добавить и где ST не равно IL .Как мне это сделать .

Пожалуйста, помогите!

Ответы [ 2 ]

1 голос
/ 09 мая 2019

Вы можете просто добавить еще $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
    }
}
]);

Надеюсь, это поможет!

0 голосов
/ 08 мая 2019

Вы можете использовать это

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

Дайте мне знать, если это не сработало или вам нужна дополнительная помощь

...