MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak sklonować kolekcję z jednej bazy danych MongoDB do innej na tym samym serwerze?

Kilka rzeczy :

  1. Ogólnie cloneCollection jest używany dla różnych instancji mongo, ale nie do kopiowania w tych samych instancjach.
  2. Również, jeśli używasz v4.2 powinieneś przestać używać copyDB &cloneCollection ponieważ są przestarzałe zgodność-z-v4.2 i zacznij używać mongodump i mongorestore lub mongoexport &mongoimport .
  3. Proponuję użyć mongodump &mongorestore :

    1. Powoduje mongodump zachowałby typy danych MongoDB, tj.; bson typy.
    2. mongodump tworzy plik binarny, gdzie jako mongoexport przekonwertowałby bson do json i znowu mongoimport przekonwertuje json do bson podczas pisania, dlatego są powolne. Możesz użyć mongoexport i mongoimport, jeśli chcesz wizualnie analizować dane kolekcji lub użyć json dane w jakimkolwiek innym celu.
  4. Możesz uruchomić poniższy skrypt w powłoce

    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
    

Aby użyć mongodump , musisz uruchomić mongodump przeciwko działającej instancji mongod lub mongos. Więc te polecenia są uruchamiane, oczekując, że mongo jest poprawnie zainstalowane, a konfiguracja ścieżki jest dobra, jeśli nie, możesz przejść do folderu mongo i uruchomić jak ./mongodump &./mongorestore . Powyższy skrypt będzie przydatny, jeśli chcesz wykonać kopię zapasową wielu kolekcji. Musisz określić kilka rzeczy w skrypcie, takich jak:

  1. mongodump--host "All-shards" -> Tutaj musisz określić wszystkie fragmenty, jeśli twój MongoDB jest zestawem replik, jeśli nie, możesz określić localhost:27017 .

  2. mongorestore --host=host-shard-name -> Musisz określić jeden fragment zestawu replik, w przeciwnym razie Twój localhost , Kilka rzeczy tutaj może być opcjonalnych --ssl , --username , --password .

  3. Więc mongodump utworzy folder o nazwie dump po raz pierwszy, który będzie miał podfoldery z nazwami dbNames i każdy podfolder będzie miał bson pliki odpowiadające ich nazwom kolekcji zostały zrzucone, więc musisz odwołać się do dbName w poleceniu przywracania i nazwa kolekcji zostanie pobrana ze zmiennej i -> ./dump/dbName/"$i".bson

Uwaga: MongoDB v3.2 jest tak stara i oparta na chmurze usługa MongoDB Mongo-atlas osiągnął już koniec swojego cyklu życia, więc prosimy o jak najszybsze uaktualnienie. Jeśli szukasz darmowej instancji mongo lub zaczynasz od MongoDB - możesz wypróbować atlas.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Obiekt MongoDB serializowany jako JSON

  2. Wynik zapytania modelu Rails Mongoid zwraca błędne informacje o rozmiarze/długości/liczbie, nawet przy użyciu limitu

  3. Zapytanie MongoDB, aby zwrócić tylko osadzony dokument

  4. Deserializacja pola po zmianie typu za pomocą sterownika MongoDb csharp

  5. MongoDB znajduje zakres dat, jeśli pokrywają się z innymi datami