Как найти дубликаты в 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' }

Это говорит нам о том, что значения «Ракеты» и «Мавс» появляются несколько раз в поле «команда».

Обратите внимание, что мы можем просто заменить $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: как группировать по нескольким полям

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *