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

Jak naklonovat kolekci z jednoho MongoDB do druhého na stejném serveru

Pár věcí :

  1. Obecně cloneCollection se používá pro různé mongo instance, ale ne ke kopírování na stejné instance.
  2. Také pokud používáte v4.2 měli byste přestat používat copyDB &cloneCollection protože jsou zastaralé kompatibilita-s-v4.2 a začněte používat mongodump a mongorestore nebo mongoexport &mongoimport .
  3. Navrhoval bych použít mongodump a mongorestore :

    1. Příčina mongodump by zachovalo datové typy MongoDB, tj.; bson typy.
    2. mongodump vytvoří binární soubor, kde jako mongoexport převede bson do json a znovu mongoimport převede json na bson při psaní, proto jsou pomalé. Můžete použít mongoexport a mongoimport, když chcete data sbírek analyzovat vizuálně, nebo použít json údaje pro jakýkoli jiný účel.
  4. Níže uvedený skript můžete spustit v shellu

    declare - a collections = ("collectionName1" "collectionName2")
    for i in "${collections[@]}"
    do
    echo "$i"
        mongodump --host "All-shards" --username=uname --password password --ssl --authenticationDatabase admin --db dbname --collection "$i"
    
        mongorestore --host=host-shard-name --port=27017 --username=uname --password=psswrd --ssl --authenticationDatabase=admin --db=dbname --collection= "$i" ./dump/dbName/"$i".bson;
    done
    

Chcete-li použít mongodump , musíte spustit mongodump proti běžící instanci mongoda nebo mongos. Takže tyto příkazy se spouštějí s očekáváním, že mongo je správně nainstalováno a nastavení cesty je dobré, pokud ne, můžete přejít do složky mongo a spustit jako ./mongodump &./mongorestore . Výše uvedený skript bude užitečný, pokud chcete zálohovat více kolekcí. Ve skriptu musíte zadat několik věcí, například:

  1. mongodump--host "All-shards" -> Zde musíte zadat všechny fragmenty, pokud je vaše MongoDB sada replik, pokud ne, můžete zadat localhost:27017 .

  2. mongorestore --host=host-shard-name -> Musíte zadat jeden fragment sady replik, jinak váš localhost , Několik věcí zde může být volitelných --ssl , --username , --password .

  3. Takže mongodump vytvoří složku s názvem dump poprvé, která bude mít podsložky s dbNames a každá podsložka bude mít bson soubory odpovídající jejich názvům kolekcí, takže musíte odkazovat na dbName v příkazu obnovení a název kolekce bude převzat z proměnné i -> ./dump/dbName/"$i".bson

Poznámka: MongoDB v3.2 je tak stará a cloudová služba MongoDB Mongo-atlas již dosáhl konce svého životního cyklu, takže jej prosím upgradujte co nejdříve. Pokud hledáte bezplatnou mongo instanci nebo začínáte s MongoDB – můžete zkusit atlas.



  1. Rozdvojený proces:Selhání během dodávky zásuvky:Přerušená trubka

  2. Získejte návratovou hodnotu funkce reactivemongo findAndUpdate

  3. Dotaz MongoDB pro aktualizaci vnořeného pole

  4. Požadavky na používání transakcí MongoDB