sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur man klona en samling från en MongoDB till en annan på samma server

Några saker :

  1. I allmänhet cloneCollection används för olika mongo-instanser men inte för att kopiera på samma instanser.
  2. Också om du använder v4.2 du bör sluta använda copyDB &cloneCollection eftersom de är utfasade kompatibilitet-med-v4.2 &börja använda mongodump och mongorestore eller mongoexport &mongoimport .
  3. Jag skulle föreslå att du använder mongodump &mongorestore :

    1. Orsak mongodump skulle bevara MongoDB:s datatyper, dvs.; bson typer.
    2. mongodump skapar en binär där som mongoexport skulle konvertera bson till json &igen mongoimport konverterar json till bson medan du skriver, vilket är anledningen till att de är långsamma. Du kan använda mongoexport och mongoimport när du vill analysera dina samlingsdata visuellt eller använda json data för något annat ändamål.
  4. Du kan köra nedanstående skript i skalet

    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
    

För att använda mongodump , måste du köra mongodump mot en pågående mongod eller mongos-instans. Så dessa kommandon körs förutsatt att mongo är korrekt installerat och sökvägsinställningen är bra, annars kan du navigera till mongo-mappen och köra som ./mongodump &./mongorestore . Ovanstående skript kommer att vara användbart om du vill säkerhetskopiera flera samlingar. Du måste ange några saker i skriptet som:

  1. mongodump--host "All-shards" -> Här måste du ange alla shards om din MongoDB är en replikuppsättning, om inte kan du ange localhost:27017 .

  2. mongorestore --host=host-shard-name -> Du måste ange en replikuppsättning, annars din localhost , Få saker här kan vara valfria --ssl , --username , --password .

  3. mongodump kommer att skapa en mapp med namnet dump för första gången som kommer att ha undermapparna med dbNames och varje undermapp kommer att ha bson filer som motsvarar deras samlingsnamn dumpade, så du måste referera till dbName i återställning kommer kommandot och samlingens namn att tas från variabeln i -> ./dump/dbName/"$i".bson

Obs! MongoDB v3.2 är så gammal och i molnbaserad MongoDB-tjänst Mongo-atlas den har redan nått slutet av livscykeln, så uppgradera så snart som möjligt. Om du letar efter en gratis mongo-instans eller börjar med MongoDB – kan du prova atlas.



  1. SQL vs NoSQL för ett lagerhanteringssystem

  2. Lagra en MessagePacked-hash i Redis

  3. Genomsnittlig aggregation med strängtidsstämpel

  4. Enkel inloggningssida i nodejs med hjälp av express och pass med mongodb