Bagaimana saya menemukan bidang duplikat dalam koleksi mongo.
Saya ingin memeriksa apakah ada bidang "nama" yang duplikat.
{
"name" : "ksqn291",
"__v" : 0,
"_id" : ObjectId("540f346c3e7fc1054ffa7086"),
"channel" : "Sales"
}
Terimakasih banyak!
Jawaban:
Gunakan agregasi
name
dan lanjutkanname
dengancount > 1
:Untuk mengurutkan hasil dari paling banyak hingga paling sedikit duplikat:
Untuk menggunakan nama kolom selain "name", ubah " $ name " menjadi " $ column_name "
sumber
"$match": {"_id" :{ "$ne" : null }
- tidak diperlukan di sini, karena bagian kedua dari pernyataan akan cukup memfilter hasilnya. Jadi hanya memeriksa kelompok yangcount > 1
akan dilakukan._id
lapangan. Itu selalu dijamin tidak null setelahgroup
operasi._id
dokumen dari$group
tahap bisa null.Anda dapat menemukan
list
dariduplicate
nama-nama menggunakan berikutaggregate
pipa:Group
semua catatan memiliki kesamaanname
.Match
mereka yanggroups
memiliki catatan lebih besar dari1
.group
lagi keproject
semua nama duplikat sebagai filearray
.Kode:
o / p:
sumber
Jawaban yang diberikan anhic bisa sangat tidak efisien jika Anda memiliki database yang besar dan nama atribut hanya ada di beberapa dokumen.
Untuk meningkatkan efisiensi, Anda dapat menambahkan kecocokan $ ke agregasi.
sumber
Kueri Grup Pertama grup menurut bidang.
Kemudian kami memeriksa Id unik dan menghitungnya, Jika hitungan lebih besar dari 1 maka bidang tersebut duplikat di seluruh koleksi sehingga hal itu akan ditangani oleh $ match query.
sumber