MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak usunąć dokumenty MongoDB, importując plik?

Od mongoimport w wersji 100.0.0 można usuwać dokumenty w MongoDB na podstawie zaimportowanego pliku. Aby to zrobić, użyj delete tryb.

Kiedy używasz delete tryb, jeśli importowany dokument ma ten sam _id jako istniejący w kolekcji, do której importujesz, istniejący dokument zostanie usunięty.

Możesz także określić inne pole lub pola (inne niż _id pole) jako pasujące pole, jeśli jest to wymagane.

Przykład

Załóżmy, że mamy kolekcję o nazwie pets które zawierają następujące dokumenty:

db.pets.find()

Wynik:

{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 }
{ "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 }
{ "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 7 }
{ "_id" : 4, "name" : "Scratch", "type" : "Cat", "weight" : 8 }
{ "_id" : 5, "name" : "Bruce", "type" : "Bat", "weight" : 3 }

I mamy następujący plik JSON o nazwie pets.json :

{"_id":1,"name":"Wag","type":"Dog"}
{"_id":2,"name":"Fluffy","type":"Cat","weight":10}
{"_id":9,"name":"Hop","type":"Kangaroo","weight":60}

Poniższe polecenie importuje plik JSON za pomocą delete tryb:

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

Uruchomienie tego polecenia spowoduje usunięcie wszystkich pasujących dokumentów z kolekcji.

Sprawdź wyniki

Przyjrzyjmy się teraz kolekcji.

db.pets.find()

Wynik:

{ "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 7 }
{ "_id" : 4, "name" : "Scratch", "type" : "Cat", "weight" : 8 }
{ "_id" : 5, "name" : "Bruce", "type" : "Bat", "weight" : 3 }

Widzimy, że pierwsze 2 dokumenty zostały usunięte. Zostały usunięte, ponieważ ich _id wartości pasowały do ​​_id wartości w istniejących dokumentach. Dzieje się tak pomimo innych szczegółów, które niekoniecznie pasują (takich jak dokument 2).

Ponadto nasz importowany plik zawierał dokument z _id z 9, ale nie było pasującego dokumentu, więc nic dla tego nie zostało usunięte.

Zmień pole/pola upsert

Możesz użyć --upsertFields parametr do określenia pola innego niż _id dla których można się zmierzyć. Używając wielu pól z tym parametrem, przekaż je jako listę oddzieloną przecinkami.

Załóżmy, że mamy inny plik JSON o nazwie pets2.json i wygląda to tak:

{ "name" : "Meow", "type" : "Cat", "weight" : 7 }
{ "name" : "Bubbles", "type" : "Fish", "weight" : 3 }

Ten dokument nie zawiera _id pole, więc musielibyśmy dopasować się do innych pól, które jednoznacznie identyfikują każdy dokument. W tym przypadku możemy użyć name i type pola.

Możemy zatem użyć następującego mongoimport polecenie:

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

Teraz ponownie sprawdźmy kolekcję:

db.pets.find()

Wynik:

{ "_id" : 4, "name" : "Scratch", "type" : "Cat", "weight" : 8 }
{ "_id" : 5, "name" : "Bruce", "type" : "Bat", "weight" : 3 }

Kot Miau został usunięty, ponieważ zwierzę istniało zarówno w kolekcji MongoDB, jak i w importowanym dokumencie.

Ryba Bubbles nie miała pasującego dokumentu, więc nic nie zostało usunięte z tego.

Sprawdź mongoimport

mongoimport jest częścią pakietu MongoDB Database Tools. Narzędzia baz danych MongoDB to zestaw narzędzi wiersza poleceń do pracy z MongoDB.

Jeśli nie masz pewności, czy masz narzędzia bazy danych MongoDB/mongoimport zainstalowany, spróbuj uruchomić następujące polecenie w terminalu lub wierszu polecenia, aby sprawdzić:

mongoimport --version

Jeśli go masz, powinieneś zobaczyć informacje o wersji itp. Jeśli go nie masz, możesz skorzystać z instrukcji instalacji na stronie MongoDB, aby zainstalować ją w swoim systemie.

Gdzie uruchamiać polecenia?

Nie zapomnij, musisz uruchomić mongoimport polecenia z wiersza poleceń systemu (np. nowe okno terminala lub wiersza polecenia).

Nie uruchamiaj ich z mongo powłoka.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB .NET nie generuje _id na upsert

  2. MongoDB - różni się od zapytania nie używa indeksów

  3. mongoDB/mongoose:unikalne, jeśli nie null

  4. Jak analizować użycie dysku przez kontener Docker

  5. Grupa sterowników MongoDB .NET według zakresu czasu