2

У меня есть коллекция с документами, которые выглядят следующим образом: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 } ]); 
+0

Возможный дубликат [Найти все дубликаты документов в коллекции MongoDB от ключевого поля] (http://stackoverflow.com/questions/9491920/find-all-duplicate-documents-in-a-mongodb- сбор за ключ поле) – DhruvPathak

ответ

3

Является ли это так просто, как группировка по нескольким клавишам или я неправильно ваш вопрос?

... 
{ $group: { _id: { id: "$_id", comment: "$comment" }, count: { $sum: 1 } } }, 
{ $match: { count: { $gte: 2 } } }, 
... 
+1

Yikes. Я думал, что попробовал это - ты на 100% прав. Вы можете просто добавить дополнительные ключи в _id. Огромное спасибо. – gleb1783

+0

Приятно слышать, что это помогло :) – DAXaholic