MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come clonare una raccolta da un MongoDB a un altro sullo stesso server

Poche cose :

  1. In generale cloneCollection viene utilizzato per diverse istanze mongo ma non per copiare sulle stesse istanze.
  2. Anche se stai usando v4.2 dovresti smettere di usare copyDB &cloneCollection perché sono obsoleti compatibilità-con-v4.2 e inizia a utilizzare mongodump e mongorestore o mongoexport &mongoimport .
  3. Suggerirei di utilizzare mongodump &mongorestore :

    1. Causa mongodump conserverebbe i tipi di dati di MongoDB, ad es.; bson tipi.
    2. mongodump crea un binario dove come mongoexport converte bson a json e ancora mongoimport convertirà json a bson durante la scrittura, motivo per cui sono lenti. Puoi utilizzare mongoexport e mongoimport quando desideri analizzare visivamente i dati delle tue raccolte o utilizzare json dati per qualsiasi altro scopo.
  4. Puoi eseguire sotto lo script nella 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
    

Per utilizzare mongodump , è necessario eseguire mongodump su un'istanza mongod o mongos in esecuzione. Quindi questi comandi vengono eseguiti aspettandosi che mongo sia installato correttamente e che l'impostazione del percorso sia buona, in caso contrario puoi passare alla cartella mongo ed eseguire come ./mongodump &./mongorestore . Lo script sopra sarà utile se si desidera eseguire il backup di più raccolte, è necessario specificare alcune cose nello script come:

  1. mongodump--host "All-shards" -> Qui devi specificare tutti gli shard se il tuo MongoDB è un set di repliche, in caso contrario puoi specificare localhost:27017 .

  2. mongorestore --host=host-shard-name -> Devi specificare uno shard del set di repliche, altrimenti il ​​tuo localhost , Poche cose qui possono essere opzionali --ssl , --username , --password .

  3. Quindi mongodump creerà una cartella denominata dump per la prima volta che avrà le sottocartelle con dbNames e ogni sottocartella avrà bson file rispettivi dei loro nomi di raccolta scaricati, quindi è necessario fare riferimento a dbName nel comando di ripristino e il nome della raccolta verranno presi dalla variabile i -> ./dump/dbName/"$i".bson

Nota : MongoDB v3.2 è così vecchio e nel servizio MongoDB basato su cloud Mongo-atlas ha già raggiunto la fine del ciclo di vita, quindi aggiorna il prima possibile. Se stai cercando un'istanza mongo gratuita o stai iniziando con MongoDB, puoi provare Atlas.