web-dev-qa-db-fra.com

Restauration d'une collection unique dans un mongodb existant

Je n'arrive pas misérablement à pouvoir restaurer une seule collection dans une base de données existante . J'utilise Ubuntu 14.04 avec Mongo version 2.6.7 annuaire.

Si je cours

mongorestore --collection contents --db mydbname

Alors je reçois:

connected to: 127.0.0.1
don't know what to do with file [dump]

Si j'ajoute dans le chemin

mongorestore --collection contents --db mydbname --dbpath dump/mydbname

Puis je reçois

If you are running a mongod on the same path you should connect to that instead of direct data file access

J'ai essayé diverses autres combinaisons, options, etc. et je ne peux tout simplement pas résoudre le problème. Je viens donc chercher de l'aide auprès de la communauté!

27
JonRed

Si vous souhaitez restaurer une seule collection, vous devez spécifier le fichier de vidage de la collection. Le fichier de vidage de la collection se trouve dans le dossier 'dump/nombase /'. Donc, en supposant que votre dossier de vidage se trouve dans votre répertoire de travail actuel, la commande donnerait quelque chose comme:

mongorestore --db mydbname --collection mycollection dump/mydbname/mycollection.bson
65
Abhay PS

Des mesures pour restaurer une collection spécifique dans le mongodb.

1) Accédez au répertoire dans lequel se trouve votre dossier de vidage.

2) Exécutez la commande suivante en modifiant en fonction de votre nom de base de données et de votre nom de collection.

mongorestore --db mydbname --collection mycollection dump/mydbname/mycollection.bson

Si vous obtenez Failed: yourdbname.collection.name: error creating indexes for collection.name: createIndex error: The field 'safe' is not valid for an index specification error, vous pouvez utiliser la commande suivante:

mongorestore --db mydbname --collection mycollection dump/mydbname/mycollection.bson --noIndexRestore
0
Krutarth Chokshi

Si vous restaurez plusieurs collections, vous pouvez utiliser une boucle:

for file in "$HOME/mongodump/dev/<your-db>/"* ; do

  if [[ "$file" != "*metadata*" && "$file" != "system.*" && "$file" != "locks.*" ]]; then

    file="$(basename "$file”)"

    mongorestore \
        --db cdt_dev \
        --collection "${file%.*}" \   # filename w/o extension
        --Host "<your-Host>" \
        --authenticationDatabase "<your-auth-db>" \
        -u "user" \
        -p "pwd" \
        "$HOME/mongodump/dev/<your-db>/$file"

  fi;

done
0
Alexander Mills