Ke dni mongoimport
verze 100.0.0, můžete odstranit dokumenty v MongoDB na základě importovaného souboru. Chcete-li to provést, použijte delete
režimu.
Když použijete delete
režimu, pokud má importovaný dokument stejné _id
hodnotu jako existující v kolekci, do které importujete, stávající dokument bude smazán.
Můžete také zadat jiné pole nebo pole (jiné než _id
pole), které bude v případě potřeby odpovídajícím polem.
Příklad
Předpokládejme, že máme sbírku nazvanou pets
které obsahují následující dokumenty:
db.pets.find()
Výsledek:
{ "_id" :1, "name" :"Wag", "type" :"Pes", "weight" :20 }{ "_id" :2, "name" :"Bark", "type" :"Pes", "váha" :10 }{ "_id" :3, "jméno" :"Mňau", "typ" :"Kočka", "váha" :7 }{ "_id" :4, "jméno" :"Scratch", "type" :"Cat", "weight" :8 }{ "_id" :5, "name" :"Bruce", "type" :"Bat", "weight" :3 }A máme následující soubor JSON s názvem
pets.json
:{"_id":1,"name":"Wag","type":"Pes"}{"_id":2,"name":"Fluffy","type":"Kočka"," váha":10}{"_id":9,"name":"Hop","type":"Klokánek","váha":60}Následující příkaz importuje soubor JSON pomocí
delete
režim:mongoimport --db=PetHotel --collection=pets --mode=delete --file=data/pets.json
Spuštěním tohoto příkazu odstraníte všechny odpovídající dokumenty v kolekci.
Zkontrolujte výsledky
Pojďme se nyní na kolekci podívat.
db.pets.find()
Výsledek:
{ "_id" :3, "name" :"Mňau", "type" :"Kočka", "váha" :7 }{ "_id" :4, "name" :"Scratch", "type" :"Kočka", "váha" :8 }{ "_id" :5, "jméno" :"Bruce", "type" :"Netopýr", "váha" :3 }Vidíme, že první 2 dokumenty byly smazány. Byli smazáni, protože jejich
_id
hodnoty odpovídaly_id
hodnoty ve stávajících dokumentech. A to navzdory tomu, že se další podrobnosti nemusí nutně shodovat (jako například s dokumentem 2).Náš importovaný soubor měl také dokument s
_id
z 9, ale neexistoval žádný odpovídající dokument, takže pro tento dokument nebylo nic smazáno.Změňte pole/pole Upsert
Můžete použít
--upsertFields
parametr k určení jiného pole než_id
proti kterému zápasit. Při použití více polí s tímto parametrem je předejte jako seznam oddělený čárkami.Předpokládejme, že máme další soubor JSON s názvem
pets2.json
a vypadá to takto:{ "jméno" :"Mňau", "typ" :"Kočka", "váha" :7 }{ "jméno" :"Bubliny", "typ" :"Ryba", "váha" :3 }Tento dokument neobsahuje
_id
pole, takže bychom museli porovnávat s jinými poli, která jedinečně identifikují každý dokument. V tomto případě bychom mohli použítname
atype
pole.Můžeme tedy použít následující
mongoimport
příkaz:mongoimport --db=PetHotel --collection=pets --mode=delete --upsertFields=name,type --file=data/pets2.json
Nyní znovu zkontrolujeme sbírku:
db.pets.find()
Výsledek:
{ "_id" :4, "name" :"Scratch", "type" :"Kočka", "váha" :8 }{ "_id" :5, "name" :"Bruce", "type" :"Netopýr", "váha" :3 }Mňau, kočka byla smazána, protože tento mazlíček existoval jak ve sbírce MongoDB, tak v importovaném dokumentu.
Bubliny, ryby neměly žádný odpovídající dokument, a tak pro něj nebylo nic smazáno.
Vyhledejte
mongoimport
mongoimport
je součástí balíčku databázových nástrojů MongoDB. Databázové nástroje MongoDB jsou sada nástrojů příkazového řádku pro práci s MongoDB.Pokud si nejste jisti, zda máte MongoDB Database Tools/
mongoimport
nainstalovaný, zkuste spustit následující příkaz v terminálu nebo příkazovém řádku a zkontrolujte:mongoimport --version
Pokud ji máte, měli byste vidět informace o verzi atd. Pokud ji nemáte, můžete ji nainstalovat do svého systému pomocí pokynů k instalaci na webu MongoDB.
Kde spustit příkazy?
Nezapomeňte, že musíte spustit
mongoimport
příkazy z příkazového řádku vašeho systému (např. nový terminál nebo okno příkazového řádku).Nespouštějte je z
mongo
skořápka.