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

Це говорить нам про те, що «Guard» з’являється кілька разів у полі «position».

Додаткові ресурси

У наступних посібниках пояснюється, як виконувати інші типові операції в MongoDB:

MongoDB: Як додати нове поле до колекції
MongoDB: як групувати та підраховувати
MongoDB: як групувати за кількома полями

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *