sql >> Database teknologi >  >> NoSQL >> MongoDB

Sådan sletter du MongoDB-dokumenter ved at importere en fil

Fra mongoimport version 100.0.0, kan du slette dokumenter i MongoDB baseret på en importeret fil. For at gøre dette skal du bruge delete tilstand.

Når du bruger delete tilstand, hvis et importeret dokument har samme _id værdi som en eksisterende i den samling, du importerer til, slettes det eksisterende dokument.

Du kan også angive et eller flere andre felter (andre end _id). felt) for at være det matchende felt, hvis det kræves.

Eksempel

Antag, at vi har en samling kaldet pets der indeholder følgende dokumenter:

db.pets.find() 

Resultat:

{ "_id" :1, "name" :"Wag", "type" :"Hund", "weight" :20 }{ "_id" :2, "name" :"Bark", "type" :"Hund", "vægt" :10 }{ "_id" :3, "name" :"Mjav", "type" :"Kat", "vægt" :7 }{ "_id" :4, "navn" :"Scratch", "type" :"Kat", "vægt" :8 }{ "_id" :5, "name" :"Bruce", "type" :"Flagermus", "vægt" :3 } 

Og vi har følgende JSON-fil kaldet pets.json :

{"_id":1,"name":"Wag","type":"Hund"}{"_id":2,"name":"Fluffy","type":"Kat"," weight":10}{"_id":9,"name":"Hop","type":"Kænguru","vægt":60}

Følgende kommando importerer JSON-filen ved hjælp af delete tilstand:

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

Kørsel af denne kommando sletter alle matchende dokumenter i samlingen.

Tjek resultaterne

Lad os tage et kig på kollektionen nu.

db.pets.find() 

Resultat:

{ "_id" :3, "name" :"Mjav", "type" :"Kat", "vægt" :7 }{ "_id" :4, "name" :"Scratch", "type" :"Kat", "vægt" :8 }{ "_id" :5, "name" :"Bruce", "type" :"Flagermus", "vægt" :3 }

Vi kan se, at de første 2 dokumenter er blevet slettet. De blev slettet, fordi deres _id værdier matchede _id værdier i de eksisterende dokumenter. Dette er på trods af, at andre detaljer ikke nødvendigvis stemmer overens (såsom med dokument 2).

Vores importerede fil havde også et dokument med en _id af 9, men der var intet matchende dokument, så intet blev slettet for det.

Skift Upsert Field/s

Du kan bruge --upsertFields parameter for at angive et andet felt end _id som man kan matche mod. Når du bruger flere felter med denne parameter, skal du sende dem som en kommasepareret liste.

Antag, at vi har en anden JSON-fil kaldet pets2.json og det ser sådan ud:

{ "name" :"Mjav", "type" :"Kat", "vægt" :7 }{ "name" :"Bobler", "type" :"Fisk", "vægt" :3 }

Dette dokument inkluderer ikke _id felt, så vi bliver nødt til at matche med andre felter, der entydigt identificerer hvert dokument. I dette tilfælde kunne vi bruge name og type felter.

Vi kan derfor bruge følgende mongoimport kommando:

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

Lad os nu tjekke samlingen igen:

db.pets.find() 

Resultat:

{ "_id" :4, "name" :"Scratch", "type" :"Kat", "vægt" :8 }{ "_id" :5, "name" :"Bruce", "type" :"Flagermus", "vægt" :3 }

Meow katten blev slettet, fordi det kæledyr fandtes i både MongoDB-samlingen og det importerede dokument.

Bobler fisken havde intet matchende dokument, og så intet blev slettet for den.

Se efter mongoimport

mongoimport er en del af MongoDB Database Tools-pakken. MongoDB-databaseværktøjerne er en række kommandolinjeværktøjer til at arbejde med MongoDB.

Hvis du ikke er sikker på, om du har MongoDB Database Tools/mongoimport installeret, prøv at køre følgende kommando i din terminal eller kommandoprompt for at kontrollere:

mongoimport --version 

Hvis du har det, bør du se versionsoplysninger osv. Hvis du ikke har det, kan du bruge installationsinstruktionerne på MongoDB-webstedet til at installere det på dit system.

Hvor skal kommandoerne køres?

Glem ikke, du skal køre mongoimport kommandoer fra dit systems kommandolinje (f.eks. et nyt terminal- eller kommandopromptvindue).

Kør dem ikke fra mongo skal.


  1. C# - MongoDB - Opdater et element i et indlejret dokument

  2. Brugerdefineret deserialisering

  3. Hvordan konfigureres selleri-redis i django project på Microsoft azure?

  4. Flere indbyggere - mongoosejs