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 brugename
ogtype
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.