sql >> Databáze >  >> NoSQL >> MongoDB

Jak odstranit dokumenty MongoDB importem souboru

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.


  1. Dotazování MongoDB, aby odpovídalo v první položce v poli

  2. Jak vytvořit zkracovač URL s Node.js a MongoDB

  3. Připojování k Redis běžícímu v Docker Container z hostitelského počítače

  4. Vykreslování názvů států na mapě pomocí Node js a D3 v reálném čase