2015-02-21 8 views
22

Ich versage kläglich in der Lage, eine einzelne Sammlung in einer vorhandenen Datenbank wiederherzustellen. Ich benutze Ubuntu 14.04 mit Mongo Version 2.6.7 Es gibt einen Dump/meindbname/contents.bson basierend auf meinem Home-Verzeichnis.Wiederherstellen einzelner Sammlung in einem vorhandenen Mongodb

Wenn ich

laufen
mongorestore --collection contents --db mydbname 

Dann erhalte ich:

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

Wenn ich auf dem Pfad hinzufügen

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

Dann bekomme ich

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

Ich habe verschiedene andere Kombinationen, Optionen usw. ausprobiert und kann es einfach nicht puzzeln, also komme ich in die Community um Hilfe!

Antwort

42

Wenn Sie eine einzelne Sammlung wiederherstellen möchten, müssen Sie die Dump-Datei der Sammlung angeben. Die Dump-Datei der Sammlung befindet sich im Ordner 'dump/dbname /'. So Ordner Ihre Dump Annahme, daß in Ihrem aktuellen Arbeitsverzeichnis, das Kommando so etwas wie gehen würde -

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

Ja, versucht, dass ein bereits. Das gibt mir 'Wenn Sie einen Mongod auf dem gleichen Pfad ausführen, sollten Sie eine Verbindung zu diesem statt direkten Datendateizugriff herstellen'. Habe auch versucht das mit dem Dienst zu starten und zu stoppen. – JonRed

+3

Nein, beachten Sie den Befehl. Sie sollten '--dbpath' nicht verwenden. –

+1

Du hast recht und ich bin ein Idiot. Das hat es getan. Vielen Dank. Habe eine akzeptierte Antwort! – JonRed

0

Wenn Sie mehrere Sammlungen wiederherstellen, können Sie eine Schleife verwenden:

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 
Verwandte Themen