sql >> Base de Datos >  >> NoSQL >> MongoDB

Cómo clonar una colección de un MongoDB a otro en el mismo servidor

Pocas cosas :

  1. En general, cloneCollection se usa para diferentes instancias de mongo pero no para copiar en las mismas instancias.
  2. También si estás usando v4.2 deberías dejar de usar copyDB &cloneCollection porque están en desuso mo">compatibilidad-con-v4.2 &comience a usar mongodump y mongorestore o mongoexport &mongoimport .
  3. Sugeriría usar mongodump &mongorestore :

    1. Porque mongodump preservaría los tipos de datos de MongoDB, es decir; bson tipos.
    2. mongodump crea un binario donde como mongoexport convertiría bson a json y otra vez mongoimport convertirá json a bson mientras escriben, por eso son lentos. Puede usar mongoexport y mongoimport cuando quiera analizar visualmente los datos de sus colecciones o usar json datos para cualquier otro propósito.
  4. Puede ejecutar el siguiente script en shell

    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
    

Para usar mongodump , debe ejecutar mongodump en una instancia de mongod o mongos en ejecución. Por lo tanto, estos comandos se ejecutan esperando que mongo esté correctamente instalado y la configuración de la ruta sea buena, si no, puede navegar a la carpeta mongo y ejecutar como ./mongodump &./mongorestore . La secuencia de comandos anterior será útil si desea hacer una copia de seguridad de varias colecciones. Debe especificar algunas cosas en la secuencia de comandos como:

  1. mongodump--host "All-shards" -> Aquí debe especificar todos los fragmentos si su MongoDB es un conjunto de réplicas; si no, puede especificar localhost:27017 .

  2. mongorestore --host=host-shard-name -> Debe especificar un fragmento del conjunto de réplicas, de lo contrario, su localhost , Pocas cosas aquí pueden ser opcionales --ssl , --username , --password .

  3. Así que mongodump creará una carpeta llamada dump por primera vez, que tendrá las subcarpetas con dbNames y cada subcarpeta tendrá bson archivos respectivos a sus nombres de colección volcados, por lo que debe consultar dbName en el comando de restauración y el nombre de la colección se tomará de la variable i -> ./dump/dbName/"$i".bson

Nota: MongoDB v3.2 es tan antiguo y está en el servicio MongoDB basado en la nube Mongo-atlas ya ha llegado al final de su ciclo de vida, así que actualice lo antes posible. Si está buscando una instancia de mongo gratuita o está comenzando con MongoDB, puede probar atlas.