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

Sådan klones en samling fra en MongoDB til en anden på samme server

Lidt ting :

  1. Generelt cloneCollection bruges til forskellige mongo-instanser, men ikke til at kopiere på samme instanser.
  2. Også hvis du bruger v4.2 du bør stoppe med at bruge copyDB &cloneCollection fordi de er forældet kompatibilitet-med-v4.2 &begynd at bruge mongodump og mongorestore eller mongoexport &mongoimport .
  3. Jeg vil foreslå at bruge mongodump &mongorestore :

    1. Årsag mongodump ville bevare MongoDBs datatyper dvs.; bson typer.
    2. mongodump opretter en binær hvor som mongoexport ville konvertere bson til json og igen mongoimport vil konvertere json til bson mens du skriver, hvorfor de er langsomme. Du kan bruge mongoexport &mongoimport, når du ville analysere dine samlingsdata visuelt eller bruge json data til ethvert andet formål.
  4. Du kan køre nedenstående script i 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
    

For at bruge mongodump , skal du køre mongodump mod en kørende mongod eller mongos instans. Så disse kommandoer køres og forventer, at mongo er korrekt installeret, og sti-opsætningen er god, hvis ikke, kan du navigere til mongo-mappen og køre som ./mongodump &./mongorestore . Ovenstående script vil være nyttigt, hvis du ønsker at sikkerhedskopiere flere samlinger. Du skal angive nogle få ting i scriptet som:

  1. mongodump--host "All-shards" -> Her skal du angive alle shards, hvis din MongoDB er et replikasæt, hvis ikke kan du angive localhost:27017 .

  2. mongorestore --host=host-shard-name -> Du skal angive et replikasæt, ellers skal din localhost , Få ting her kan være valgfrie --ssl , --username , --password .

  3. mongodump vil oprette en mappe med navnet dump for første gang, som vil have undermapperne med dbNames, og hver undermappe vil have bson filer, der svarer til deres samlingsnavne dumpet, så du skal henvise til dbName i gendannelse vil kommando og samlingsnavn blive taget fra variabel i -> ./dump/dbName/"$i".bson

Bemærk: MongoDB v3.2 er så gammel og i skybaseret MongoDB-tjeneste Mongo-atlas den har allerede nået slutningen af ​​sin livscyklus, så opgrader venligst hurtigst muligt. Hvis du leder efter en gratis mongo-instans eller starter med MongoDB - kan du prøve atlas.



  1. MongoDB version 2.6 fejler stadig på 2dsphere geoindeksering med henvisning til manglende evne til at udtrække geonøgler og mulig misformet geometri

  2. Multipel grænsetilstand i mongodb

  3. Sådan opretter du Mongodb-skema dynamisk ved hjælp af nodejs

  4. Flask-PyMongo collMod