MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

pymongo:hapus duplikat (pengurangan peta?)

Pendekatan alternatif adalah dengan menggunakan aggregation framework yang memiliki kinerja lebih baik daripada pengurangan peta. Pertimbangkan pipa agregasi berikut yang sebagai tahap pertama dari pipa agregasi, $group operator mengelompokkan dokumen menurut ID bidang dan simpan di unique_ids kolom setiap _id nilai catatan yang dikelompokkan menggunakan $addToSet operator. $sum operator akumulator menjumlahkan nilai bidang yang diteruskan ke sana, dalam hal ini konstanta 1 - dengan demikian menghitung jumlah catatan yang dikelompokkan ke dalam bidang penghitungan. Langkah pipa lainnya $match menyaring dokumen dengan hitungan minimal 2, yaitu duplikat.

Setelah Anda mendapatkan hasil dari agregasi, Anda mengulangi kursor untuk menghapus _id pertama di unique_ids bidang, lalu dorong sisanya ke dalam larik yang akan digunakan nanti untuk menghapus duplikat (dikurangi satu entri):

cursor = db.coll.aggregate(
    [
        {"$group": {"_id": "$ID", "unique_ids": {"$addToSet": "$_id"}, "count": {"$sum": 1}}},
        {"$match": {"count": { "$gte": 2 }}}
    ]
)

response = []
for doc in cursor:
    del doc["unique_ids"][0]
    for id in doc["unique_ids"]:
        response.append(id)

coll.remove({"_id": {"$in": response}})


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. teknik untuk menyimpan perpustakaan di system.js mongoDB

  2. MongoDB MapReduce pembaruan di tempat bagaimana

  3. Bagaimana cara mendeteksi apakah serializer mongodb sudah terdaftar?

  4. cara menyusun indeks majemuk di mongodb

  5. Kait Pra-Simpan Mongoose diaktifkan, tetapi Tidak Menyimpan Bidang Tambahan (TIDAK menggunakan model.update)