Як знайти дублікати в 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: як групувати за кількома полями