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

Jak scalić dokumenty podczas importowania pliku do MongoDB

Kiedy używasz mongoimport aby zaimportować pliki do MongoDB, masz możliwość połączenia istniejących dokumentów z tymi, które importujesz.

W takim przypadku, jeśli importowany dokument ma ten sam _id jako istniejący w kolekcji, do której importujesz, istniejący dokument zostanie scalony z importowanym.

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

Podczas scalania dokumentów wynikowy dokument połączy istniejące dane z nowymi danymi znajdującymi się w importowanym pliku. Wszelkie dane, które są takie same, pozostaną takie same. Wszelkie sprzeczne dane spowodują, że dane importowanego pliku zastąpią istniejące dane. Jeśli importowany dokument nie zawiera pola, które znajduje się w odpowiednim dokumencie w kolekcji MongoDB, to pole pozostanie niezmienione w kolekcji (tzn. nie zostanie usunięte ani zmienione).

Sposób na scalanie dokumentów za pomocą mongoimport jest użycie merge tryb.

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" }
{ "_id" : 2, "name" : "Bark", "type" : "Dog" }
{ "_id" : 3, "name" : "Meow", "type" : "Cat" }

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

{"_id":2.0,"name":"Fetch","type":"Dog","weight":40.0}
{"_id":3.0,"weight":10.0}
{"_id":4.0,"name":"Hop","type":"Kangaroo","weight":60.0}

Następujące polecenie importuje plik JSON do kolekcji:

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

To używa merge tryb scalania pasujących dokumentów z importowanymi.

Sprawdź wyniki

Przyjrzyjmy się teraz kolekcji.

db.pets.find()

Wynik:

{ "_id" : 1, "name" : "Wag", "type" : "Dog" }
{ "_id" : 2, "name" : "Fetch", "type" : "Dog", "weight" : 40 }
{ "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 10 }
{ "_id" : 4, "name" : "Hop", "type" : "Kangaroo", "weight" : 60 }

Widzimy, że dokument 1 jest niezmieniony, pole nazwy dokumentu 2 zostało zmienione na Fetch , a także miał weight pole dodane.. Do dokumentu 3 dodano również pole wagi, a dokument 4 został wstawiony.

Zmień pole/pola upsert

Możesz użyć --upsertFields parametr do określenia pola innego niż _id do dopasowania. Używając tego parametru, przekaż pola jako listę oddzieloną przecinkami.

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

{"name":"Wag","type":"Dog","weight":20.0,"gooddog":true}
{"name":"Bubbles","type":"Fish"}

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=merge --upsertFields=name,type --file=data/pets2.json

Teraz ponownie sprawdźmy kolekcję:

db.pets.find()

Wynik:

{ "_id" : 1, "name" : "Wag", "type" : "Dog", "gooddog" : true, "weight" : 20 }
{ "_id" : 2, "name" : "Fetch", "type" : "Dog", "weight" : 40 }
{ "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 10 }
{ "_id" : 4, "name" : "Hop", "type" : "Kangaroo", "weight" : 60 }
{ "_id" : ObjectId("5ff0548dd991410169412300"), "name" : "Bubbles", "type" : "Fish" }

Widzimy, że Wag został zaktualizowany (ale _id wartość pozostaje taka sama).

Z drugiej strony bąbelki nie pasowały do ​​pól upsert i dlatego zostały wstawione.

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. Szukaj w wielu kolekcjach w MongoDB

  2. Jak zaimportować format pliku .bson na mongodb

  3. MongoDB $min Operator potoku agregacji

  4. Django-nonrel vs Django-mongodb vs Mongokit vs pymongo native

  5. Monitorowanie instancji MongoDB za pomocą usługi monitorowania MongoDB (MMS)