2013-04-12 13 views
23

mongoデータベースを製品sever.andにバックアップしてから、ステージングサーバーに復元していました。 ここにはいくつかの問題があります。データベースにはたくさんのコレクションがあります。ステージングサーバーで復元したくないコレクションがあります。mongodumpは指定されたコレクションを無視します

これは、ステージングデータベースをダンプし、プロダクトデータベースをダンプしてから、プロダクトをステージングするために--dropオプションを使用して復元できます。ステージングdbで指定されたコレクションを復元します。本当に悪いです。

1.ダンプ産デシベル

mongodump --host product-server-host --username abcd --password bcda -d db -o pruduct-dump-dir 

2.ダンプステージングデシベル

mongodump --host staging-server-host --username abcd --password bcda -d db -o staging -dump-dir 

3.すべてのコレクションを復元して、再び がpruductダンプを復元コレクションを復元ステージングサーバーへのディレクトリ

mongorestore --host staging-server-host --username abcd --password bcda --drop pruduct-dump-dir 

mongorestore --host staging-server-host --username abcd --password bcda --drop --collection coll pruducting-dump-dir 

私がダムしているときにignore-collectionのようなオプションはありますか? 任意の提案をいただければ幸いです。3

答えて

6

--collection COLLECTION_NAMEを追加して、必要なコレクションをダンプできます。デフォルトでは、データベースからダンプするコレクションを指定しない場合、MongoDumpはそのデータベース内のすべてのコレクションをダンプします。

+1

私は20を持っている場合、どのようなコレクションは4つのコレクションを除いてダンプする必要があります – sashimi

+1

各コレクションを個別にダンプする必要があります。 – Nick

+13

'--exclude_collection col1 col2 col3'のようなものは素晴らしいでしょう。それについてはhttp://docs.mongodb.org/manual/reference/program/mongodump/には言及していません。 MongoDB Jiraに機能リクエストがあるようです:https://jira.mongodb.org/browse/SERVER-2459あなたは問題に投票する必要があります – tester

42

バージョン3.0.0

--excludeCollection <collection_name> 
--excludeCollectionsWithPrefix <collection_prefix> 

除外することを繰り返してから、今すぐご利用いただけます以上1

アウトthe documentation

モンゴ3.4のよう
+7

上記のドキュメントは、「配列の文字列 "と呼ぶ。シェルのパラメータとして配列の統一されたアイデアは実際にはありません。したがって、何かを意味する可能性があります。カンマ区切り文字を含む1つの文字列ですか?新しいフラグが見つかるまで、それは任意の数の文字列ですか?私たちは '()'や '[]' 'を' '' 'に置きますか?別のコレクションでフラグを繰り返すのはどうですか?これらのすべてが配列の置き換えとして使用されているので、誰かが実際に望むものを明確にすることができればうれしいでしょう。 – Thor84no

+8

@ Thor84あなたは正しいです、それが何を意味するかはわかりません。しかし、複数のコレクションを除外するには、excludeCollectionパラメーターを繰り返すことができます(これは配列の意味です)。例: 'mongodump --excludeCollection = users --excludeCollection = jobs -d mydatabase' –

+0

ありがとう、それはとても役に立ちます。 – Thor84no

0
mongodump --db test --excludeCollection=users --excludeCollection=salaries 
+0

答えに説明を追加することは可能でしょうか。私はコードだけの回答が良いとstackoveflow標準であることを確認していない。 –

0

、あなたは今とき--nsExclude <namespace pattern>オプションを指定することができますリストア操作から指定された名前空間を除外するMongoデータベース・ダンプからリストアします。これは、操作が既に発生している場合に特に便利です。ここ

公式ドキュメント:https://docs.mongodb.com/manual/reference/program/mongorestore/#cmdoption-nsexclude

あなたは、ワイルドカードで複数のコレクションを除外することができます。

mongorestore --db test --nsExclude 'test.*_tmp' 

または代わりに、指定する複数の--nsExcludeのオプションも同様に動作します:

mongorestore --db test --nsExclude 'test.collection1' --nsExclude 'test.collection2' 
関連する問題