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

Zkopírujte/klonujte sbírku v MongoDB

V dřívějších verzích MongoDB jste mohli použít db.collection.copyTo() způsob kopírování kolekce.

MongoDB od té doby tuto metodu zavrhl. Počínaje verzí 4.2 také MongoDB odstranil eval příkaz. Je dáno db.collection.copyTo() zalomí eval , to znamená, že nemůžete použít ani jeden z nich, pokud používáte MongoDB 4.2 nebo novější.

Naštěstí existuje jiný způsob, jak zkopírovat sbírku MongoDB.

Vyhledejte databázové nástroje MongoDB

V MongoDB můžete klonovat kolekci pomocí databázových nástrojů MongoDB. Konkrétně můžete použít mongodump a mongorestore .

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 nainstalované databázové nástroje MongoDB, zkuste spustit následující příkazy v terminálu nebo příkazovém řádku a zkontrolujte:

mongodump --version
mongorestore --version

To konkrétně kontroluje mongodump a mongorestore verze.

Pokud je nemáte, můžete k instalaci databázových nástrojů MongoDB do vašeho systému použít pokyny k instalaci na webu MongoDB.

Klonujte kolekci do stejné databáze

Musíte spustit mongodump a mongorestore z příkazového řádku vašeho systému (např. nový terminál nebo okno příkazového řádku). Nespouštějte jej z mongo skořápka.

Zde je příklad kódu, který klonuje kolekci do stejné databáze:

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

V tomto případě zálohujeme pets kolekce v PetHotel databázi a poté ji obnovte jako pets2 ve stejné databázi.

Toto používá mongodump vytvořte záložní soubor kolekce a poté mongorestore obnovit tuto sbírku pod jiným názvem. Udělali jsme to tak, že jsme uložili kolekci do standardního výstupního proudu a nasměrovali do mongorestore .

Každý parametr dělá toto:

Parametr Popis
--archive Zapíše výstup do zadaného archivního souboru nebo, pokud archivní soubor není specifikován, zapíše do standardního výstupu (stdout ). V našem případě je archivní soubor nespecifikován, takže se zapisoval na standardní výstup.
--db Určuje databázi obsahující kolekci, kterou chceme klonovat. V tomto případě se databáze nazývá PetHotel .
--nsFrom Určuje kolekci v souboru výpisu. Toto je sbírka, kterou chceme naklonovat.
--nsTo Uvádí název kolekce, který by měl být použit při obnově. V našem případě to nazýváme pets2 .

Kopírování kolekce do jiné databáze

Stejnou techniku ​​můžete použít ke zkopírování kolekce do jiné databáze. V tomto případě byste ani nemuseli měnit název sbírky, pokud nechcete.

Zde je příklad:

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

Toto je velmi podobné předchozímu příkladu, s výjimkou našeho --nsTo argument určuje PetHouse.pets jako cílová kolekce.

To znamená, že klonovaná kolekce se bude nazývat pets a bude umístěn v PetHouse databáze (místo původní PetHotel databáze).


  1. Celery/Redis stejná úloha se provádí vícekrát paralelně

  2. Hadoop ekosystém – Úvod do Hadoop komponent

  3. Existuje způsob, jak najít konkrétní klíč na konkrétní instanci redis v režimu clusteru?

  4. Připojení aplikace Heroku ke cloudové službě Atlas MongoDB