MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Usuń zduplikowane rekordy z mongodb 4.0

Zduplikowane rekordy można grupować za pomocą potoku agregacji:

db.theCollection.aggregate([
   {$group: {_id: {item: "$item", qty: "$qty", size: "$size", status: "$status"}}},
   {$project: {_id: 0, item: "$_id.item", qty: "$_id.qty", size: "$_id.size", status: "$_id.status"}},
   {$out: "theCollectionWithoutDuplicates"}
])

Po wykonaniu potoku agregacji theCollectionWithoutDuplicates kolekcja zawiera dokument dla każdej grupy oryginalnych zduplikowanych dokumentów, z nowym _id - możesz zweryfikować dane wyjściowe, usuwając oryginalną kolekcję (db.theCollection.drop() ) i zmień nazwę nowej kolekcji (db.theCollectionWithoutDuplicates.renameCollection('theCollection') ). Usunięcie i zmianę nazwy można łączyć w db.theCollectionWithoutDuplicates.renameCollection('theCollection', true) .

WYJAŚNIENIE użycia potoku agregacji:

  1. db.theCollection.aggregate([]) wykonuje potok agregacji, otrzymując listę etapów agregacji do wykonania
  2. $group etap grupuje dokument według pól określonych jako kolejne _id pole
  3. $project etap zmiany nazw pól, spłaszczanie zagnieżdżonego _id poddokumenty tworzone przez $group
  4. $out etap przechowuje agregację wynikowych dokumentów do danej kolekcji


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Czy MongoDB MapReduce blokuje bazę danych?

  2. MongoDB $toDouble

  3. Eksportowanie system.profile z MongoDB nie działa

  4. Zbiorcza aktualizacja/zastąpienie Mongodb C# w podkolekcji

  5. MongoDB oblicza wartości z dwóch tablic, sortowania i ograniczania