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

Kopiuj/klonuj kolekcję w MongoDB

We wcześniejszych wersjach MongoDB można było użyć db.collection.copyTo() metoda kopiowania kolekcji.

MongoDB od tego czasu wycofał tę metodę. Ponadto, począwszy od wersji 4.2, MongoDB usunął eval Komenda. Biorąc pod uwagę db.collection.copyTo() owija eval , oznacza to, że nie możesz użyć żadnego z nich, jeśli używasz MongoDB 4.2 lub nowszego.

Na szczęście istnieje inny sposób na skopiowanie kolekcji MongoDB.

Sprawdź narzędzia bazy danych MongoDB

W MongoDB możesz sklonować kolekcję za pomocą narzędzi bazy danych MongoDB. W szczególności możesz użyć mongodump i mongorestore .

Narzędzia baz danych MongoDB to zestaw narzędzi wiersza poleceń do pracy z MongoDB.

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

mongodump --version
mongorestore --version

Sprawdza to konkretnie mongodump i mongorestore wersje.

Jeśli ich nie masz, możesz skorzystać z instrukcji instalacji na stronie MongoDB, aby zainstalować narzędzia bazy danych MongoDB w swoim systemie.

Klonuj kolekcję do tej samej bazy danych

Musisz uruchomić mongodump i mongorestore z wiersza poleceń systemu (np. nowe okno terminala lub wiersza polecenia). Nie uruchamiaj go z mongo powłoka.

Oto przykład kodu, który klonuje kolekcję do tej samej bazy danych:

mongodump --archive --db=PetHotel --collection=pets | mongorestore --archive  --nsFrom='PetHotel.pets' --nsTo='PetHotel.pets2'

W tym przypadku tworzymy kopię zapasową pets odbiór w PetHotel bazę danych, a następnie przywróć ją jako pets2 w tej samej bazie danych.

To używa mongodump aby utworzyć kopię zapasową kolekcji, a następnie mongorestore przywrócić tę kolekcję pod inną nazwą. Zrobiliśmy to, zrzucając kolekcję do standardowego strumienia wyjściowego i przesyłając do mongorestore .

Oto, co robi każdy parametr:

Parametr Opis
--archive Zapisuje dane wyjściowe do określonego pliku archiwum lub, jeśli plik archiwum nie jest określony, zapisuje na standardowym wyjściu (stdout ). W naszym przypadku plik archiwum jest nieokreślony, więc zapisał na standardowe wyjście.
--db Określa bazę danych zawierającą kolekcję, którą chcemy sklonować. W tym przypadku baza danych nazywa się PetHotel .
--nsFrom Określa kolekcję w pliku zrzutu. To jest kolekcja, którą chcemy sklonować.
--nsTo Określa nazwę kolekcji, która powinna być używana podczas przywracania. W naszym przypadku nazywamy to pets2 .

Kopiuj kolekcję do innej bazy danych

Tej samej techniki można użyć do skopiowania kolekcji do innej bazy danych. W takim przypadku nie musisz nawet zmieniać nazwy kolekcji, jeśli nie chcesz.

Oto przykład:

mongodump --archive --db=PetHotel --collection=pets | mongorestore --archive  --nsFrom='PetHotel.pets' --nsTo='PetHouse.pets'

Jest to bardzo podobne do poprzedniego przykładu, z wyjątkiem tego, że nasz --nsTo argument określa PetHouse.pets jako kolekcja docelowa.

Oznacza to, że sklonowana kolekcja będzie nazywać się pets i będzie znajdować się w PetHouse baza danych (zamiast oryginalnego PetHotel bazy danych).


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB findOneAndReplace()

  2. Osadzona populacja mangusty

  3. SQL RPAD()

  4. Ember wielopoziomowa hierarchia danych z osadzonymi zawsze

  5. Meteor:nieoczekiwany kod wyjścia mongo 100