MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да клонирате колекция от една MongoDB в друга на същия сървър

Малко неща :

  1. По принцип cloneCollection се използва за различни екземпляри на mongo, но не и за копиране в същите екземпляри.
  2. Също така, ако използвате v4.2 трябва да спрете да използвате copyDB &cloneCollection защото са отхвърлени съвместимост-с-v4.2 &започнете да използвате mongodump и mongorestore или mongoexport &mongoimport .
  3. Предлагам да използвате mongodump &mongorestore :

    1. Причина mongodump ще запази типовете данни на MongoDB, т.е.; bson видове.
    2. mongodump създава двоичен файл където като mongoexport ще конвертира bson към json &отново mongoimport ще конвертира json към bson докато пишат, поради което са бавни. Можете да използвате mongoexport &mongoimport, когато искате да анализирате визуално данните на вашите колекции или да използвате json данни за всякакви други цели.
  4. Можете да изпълните скрипта по-долу в 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
    

За да използвате mongodump , трябва да стартирате mongodump срещу работещ екземпляр на mongod или mongos. Така че тези команди се изпълняват, като се очаква mongo да е правилно инсталиран и настройката на пътя е добра, ако не, можете да отидете до папката mongo и да стартирате като ./mongodump &./mongorestore . Горният скрипт ще бъде полезен, ако искате да архивирате множество колекции, трябва да посочите няколко неща в скрипта като:

  1. mongodump--хост "Всички фрагменти" -> Тук трябва да посочите всички фрагменти, ако вашият MongoDB е набор от реплики, ако не, можете да посочите localhost:27017 .

  2. mongorestore --host=host-shard-name -> Трябва да посочите един шард от набор от реплики, в противен случай вашият localhost , Малко неща тук могат да бъдат незадължителни --ssl , --потребителско име , --парола .

  3. И така mongodump ще създаде папка с име dump за първи път, който ще има подпапки с dbNames и всяка подпапка ще има bson файлове, съответстващи на техните имена на колекции, изхвърлени, така че трябва да се обърнете към dbName в командата за възстановяване и името на колекцията ще бъде взето от променлива i -> ./dump/dbName/"$i".bson

Забележка: MongoDB v3.2 е толкова стар и в базирана на облак услуга MongoDB Mongo-atlas вече е достигнал края на жизнения си цикъл, така че, моля, надстройте възможно най-скоро. Ако търсите безплатен екземпляр на mongo или започнете с MongoDB – можете да опитате atlas.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как мога да извлека документ по _id?

  2. Как да - множество приложения на Meteor на една MongoDB - същите колекции?

  3. Задайте изчакване на Mongo в Spring Boot

  4. Актуализация на MongoDB Collection:инициализиране на документ със стойности по подразбиране

  5. MongoDB 4.0 транзакции:ACID четене + запис?