MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

So löschen Sie MongoDB-Dokumente durch Importieren einer Datei

Ab mongoimport Version 100.0.0 können Sie Dokumente in MongoDB basierend auf einer importierten Datei löschen. Verwenden Sie dazu delete Modus.

Wenn Sie delete verwenden Modus, wenn ein importiertes Dokument die gleiche _id hat Wert als vorhandenes Dokument in der Sammlung, in die Sie importieren, wird das vorhandene Dokument gelöscht.

Sie können auch ein anderes Feld oder andere Felder angeben (außer _id Feld) als übereinstimmendes Feld, falls erforderlich.

Beispiel

Angenommen, wir haben eine Sammlung namens pets die folgende Dokumente enthalten:

db.pets.find() 

Ergebnis:

{ "_id" :1, "name" :"Wag", "type" :"Hund", "weight" :20 }{ "_id" :2, "name" :"Bark", "type" :„Hund“, „Gewicht“ :10 }{ „_id“ :3, „Name“ :„Miau“, „Typ“ :„Katze“, „Gewicht“ :7 }{ „_id“ :4, „Name“ :„Scratch“, „type“ :„Cat“, „weight“ :8 }{ „_id“ :5, „name“ :„Bruce“, „type“ :„Bat“, „weight“ :3 } 

Und wir haben die folgende JSON-Datei namens pets.json :

{"_id":1,"name":"Wag","type":"Hund"}{"_id":2,"name":"Fluffy","type":"Cat"," weight":10}{"_id":9,"name":"Hop","type":"Kangaroo","weight":60}

Der folgende Befehl importiert die JSON-Datei mit delete Modus:

mongoimport --db=PetHotel --collection=pets --mode=delete --file=data/pets.json 

Durch Ausführen dieses Befehls werden alle übereinstimmenden Dokumente in der Sammlung gelöscht.

Überprüfen Sie die Ergebnisse

Werfen wir jetzt einen Blick auf die Sammlung.

db.pets.find() 

Ergebnis:

{ "_id" :3, "name" :"Miau", "type" :"Cat", "weight" :7 }{ "_id" :4, "name" :"Scratch", "type" :„Katze“, „Gewicht“ :8 }{ „_id“ :5, „Name“ :„Bruce“, „Typ“ :„Fledermaus“, „Gewicht“ :3 }

Wir können sehen, dass die ersten 2 Dokumente gelöscht wurden. Sie wurden wegen ihrer _id gelöscht Werte stimmten mit _id überein Werte in den vorhandenen Dokumenten. Dies stimmt trotz anderer Details nicht unbedingt überein (wie etwa bei Dokument 2).

Außerdem hatte unsere importierte Datei ein Dokument mit einer _id von 9, aber es gab kein passendes Dokument, und daher wurde für dieses Dokument nichts gelöscht.

Ändern Sie die Upsert-Felder

Sie können die --upsertFields verwenden -Parameter, um ein anderes Feld als _id anzugeben für die zu vergleichen. Wenn Sie mehrere Felder mit diesem Parameter verwenden, übergeben Sie sie als kommagetrennte Liste.

Angenommen, wir haben eine weitere JSON-Datei namens pets2.json und es sieht so aus:

{ "name" :"Meow", "type" :"Cat", "weight" :7 }{ "name" :"Bubbles", "type" :"Fish", "weight" :3 }

Dieses Dokument enthält nicht die _id Feld, also müssten wir es mit anderen Feldern abgleichen, die jedes Dokument eindeutig identifizieren. In diesem Fall könnten wir den name verwenden und type Felder.

Wir können daher den folgenden mongoimport verwenden Befehl:

mongoimport --db=PetHotel --collection=pets --mode=delete --upsertFields=name,type --file=data/pets2.json 

Lassen Sie uns nun die Sammlung erneut überprüfen:

db.pets.find() 

Ergebnis:

{ „_id“ :4, „name“ :„Scratch“, „type“ :„Cat“, „weight“ :8 }{ „_id“ :5, „name“ :„Bruce“, „type“ :"Fledermaus", "Gewicht" :3 }

Miau die Katze wurde gelöscht, weil dieses Haustier sowohl in der MongoDB-Sammlung als auch im importierten Dokument vorhanden war.

Der Fisch Bubbles hatte kein passendes Dokument und deshalb wurde für dieses Dokument nichts gelöscht.

Suchen Sie nach mongoimport

mongoimport ist Teil des MongoDB Database Tools-Pakets. Die MongoDB-Datenbanktools sind eine Reihe von Befehlszeilendienstprogrammen für die Arbeit mit MongoDB.

Wenn Sie sich nicht sicher sind, ob Sie die MongoDB Database Tools/mongoimport installiert haben, versuchen Sie, den folgenden Befehl in Ihrem Terminal oder Ihrer Eingabeaufforderung auszuführen, um dies zu überprüfen:

mongoimport --version 

Wenn Sie es haben, sollten Sie Versionsinformationen usw. sehen. Wenn Sie es nicht haben, können Sie die Installationsanweisungen auf der MongoDB-Website verwenden, um es auf Ihrem System zu installieren.

Wo sollen die Befehle ausgeführt werden?

Vergessen Sie nicht, dass Sie mongoimport ausführen müssen Befehle über die Befehlszeile Ihres Systems (z. B. ein neues Terminal- oder Eingabeaufforderungsfenster).

Führen Sie sie nicht vom mongo aus Hülse.