MongoDB - Найти дубликаты документов по нескольким ключам
У меня есть коллекция с документами, которые выглядят следующим образом:
{
"_id" : ObjectId("55b377cb66b393427367c3e2"),
"comment" : "This is a comment",
"url_key" : "55b377cb66b393427367c3df", //This is an ObjectId from another record in a different collection
}
Мне нужно найти записи в этой коллекции, которые содержат повторяющиеся значения как для комментария, так и для url_key.
Я могу легко сгенерировать (используя совокупность) повторяющиеся записи для одного и того же ключа (например, комментарий), но я не могу понять, как группировать / объединять для нескольких ключей.
Вот мой текущий конвейер агрегации:
db.comments.aggregate([ { $group: { _id: { comment: "$comment" }, uniqueIds: { $addToSet: "$_id" }, count: { $sum: 1 } } }, { $match: { count: { $gte: 2 } } }, { $sort: { count : -1} }, {$limit 10 } ]);
1 ответ
Решение
Это так же просто, как группировка по нескольким ключам, или я неправильно понял ваш вопрос?
...
{ $group: { _id: { id: "$_id", comment: "$comment" }, count: { $sum: 1 } } },
{ $match: { count: { $gte: 2 } } },
...