2

mongo インスタンスで全文検索を有効にしようとしていますが、インデックスを作成しているコレクションが非常に大きいです。通常、mongo コンソールを開いて次のように入力します。

db.articles.ensureIndex({"text":"text"})

しかし、私は1時間待って、これを一晩実行したいので、nohupコマンドのようなものを実行する機能を探しています.

私は次のようなことができることを知っています:

mongo dbname --eval "db.articles.ensureIndex({'text':'text'})"

しかし、これを次のように言い換えても:

nohup mongo dbname --eval "db.articles.ensureIndex({'text':'text'})" &

これはまだ私のmongoの使用を完全にブロックしています。あれは、

$ mongo
> show dbs

他のジョブがバックグラウンドで実行されている間にタイムアウトします。インデックス作成中は完全に使用できません。これをバックグラウンド プロセスとしてより効果的に実行する方法や、index コマンドを非常に多くのスレッドなどに制限する方法はありますか?

更新 実際には、それよりも悪いです。この index コマンドを実行すると、私の mongo が完全にブロックされ、手足が動かなくなったようです。非常に大きなインデックスだと思います。

4

1 に答える 1

4

オプションを使用する必要がありbackgroundます。

db.collection.ensureIndex({ text: 'text', background: true })

mongodb のドキュメントから:

インデックスの構築によって他のデータベース アクティビティがブロックされないように、バックグラウンドでインデックスを構築します。

詳細はこちらhttp://docs.mongodb.org/manual/reference/method/db.collection.ensureIndex/

于 2013-07-15T21:40:56.570 に答える