Как найти дубликаты в MongoDB


Вы можете использовать следующий синтаксис для поиска документов с повторяющимися значениями в MongoDB:

db.collection.aggregate([
 {" $group " : { "_id": " $field1", "count": { " $sum ": 1 } } },
 {" $match ": {"_id" :{ " $ne " : null } , "count" : {" $gt ": 1} } }, 
 {" $project ": {"name" : " $_id", "_id" : 0} }
])

Вот что делает этот синтаксис:

  • Сгруппировать все документы, имеющие одинаковое значение в поле1
  • Сопоставьте группы, которые имеют более одного документа
  • Проецировать все группы, имеющие более одного документа

Этот конкретный запрос находит повторяющиеся значения в столбце field1.Просто измените это значение, чтобы изменить поле для поиска.

В следующем примере показано, как использовать этот синтаксис с набором групп со следующими документами:

db.teams.insertOne({team: " Mavs", position: " Guard", points: 31 })
db.teams.insertOne({team: " Mavs", position: " Guard", points: 22 })
db.teams.insertOne({team: " Rockets", position: " Center", points: 19 })
db.teams.insertOne({team: " Rockets", position: " Forward", points: 26 })
db.teams.insertOne({team: " Cavs", position: " Guard", points: 33 })

Пример: поиск документов с повторяющимися значениями

Мы можем использовать следующий код, чтобы найти все повторяющиеся значения в столбце «команда»:

db.teams.aggregate([
 {" $group " : { "_id": " $team", "count": { " $sum ": 1 } } },
 {" $match ": {"_id" :{ " $ne " : null } , "count" : {" $gt ": 1} } }, 
 {" $project ": {"name" : " $_id", "_id" : 0} }
])

Этот запрос возвращает следующие результаты:

{ name: 'Rockets' }
{ name: 'Mavs' }

Это говорит нам о том, что значения «Rockets» и «Mavs» встречаются несколько раз в поле «team».

Обратите внимание, что мы можем просто изменить $team на $position , чтобы вместо этого искать повторяющиеся значения в поле «position»:

db.teams.aggregate([
 {" $group " : { "_id": " $position", "count": { " $sum ": 1 } } },
 {" $match ": {"_id" :{ " $ne " : null } , "count" : {" $gt ": 1} } }, 
 {" $project ": {"name" : " $_id", "_id" : 0} }
])

Этот запрос возвращает следующие результаты:

{ name: 'Guard' }

Это говорит нам о том, что «Страж» встречается несколько раз в поле «Позиция».

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные операции в MongoDB:

MongoDB: как добавить новое поле в коллекцию
MongoDB: как группировать и считать
MongoDB: как сгруппировать по нескольким полям

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.