mongodbのバックグラウンドタスク

If possible, i'd like to run a find & remove query on non-indexed columns in "background", without disturbing other tasks or exhausting memory to the detriment of others.

インデックス作成には、背景フラグがあります。同じタスクを検索/削除するために追加できますか?

ヒントありがとう

5
私が知る限りではなく、インデックスされていない列を削除するという意味ですか?つまり、列全体を削除するのではなく、メモリ内演算子を使用して列を削除するということですか?また、索引付けされていない列は、索引付き索引としてqwuickとして削除する必要があります。
追加された 著者 Sammaye,
ああ、私は今見て、申し訳ありません、私は決して方法を知っています。私は、レプリカを優先させる方法としてレプリカを使用することを考えましたが、MongoDBでのレプリケーションの実装により動作しません
追加された 著者 Sammaye,
私は非インデックスフィールドで見つけるつもりです。 .find({i_am_not_indexed: "target"})、一致するドキュメントを完全に削除します。これには数分かかります。それは緊急の仕事ではないのでOKだったが、それは他のmongoタスクを遅くしている。だから、私は背景のようなものを探している:真実..
追加された 著者 ledy,

2 答え

これはあなたのために "背景:真"を使うことができるものではありません。おそらくこれを処理する最良の方法は、これをバックグラウンドで行うスクリプトを書くことです。このスクリプトは、小さなバッチで操作を実行し、その間にいくらかの遅延を設定する必要があります。擬似コードでは、次のようになります。

  • 更新する必要がある10件のドキュメントを見つける
  • 10個のドキュメントを更新する
  • スリープ
  • 最初のステップに進みます。

あなたは睡眠のためにどの価値があるかを実験しなければなりません。更新しているすべてのドキュメントをメモリに格納する必要があることを認識する必要があるため、少なくともいくらかの影響があります。

2
追加された

いいえ、背景はありません:この操作の真のフラグです。ページフォールトが発生したときに削除が発生し、他の操作を実行できるようになります。これを調整する必要がある場合は、小さなバッチで削除するか、検索/削除パターンを使用して、他の操作への影響を軽減できます。

2
追加された
.find(削除なし)で同じことが起こります。この低優先度タスクの回避策もありませんか?
追加された 著者 ledy,