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žít name a type 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.