2012-01-17 1 views
1

キャップ付きコレクションの場合、新しい挿入がいくつ発生したかを毎分データベースに問い合わせることができますか?キャップドコレクションの最後の分に挿入がいくつ発生したかをMongoに問い合わせてください

キャッピングされていないコレクションの場合、db.foo.count()から返された値を保存して1分前の値と比較できますが、キャッピングされたコレクションの場合、コレクションが最大になったらこのメソッドは機能しません。

+1

実際はありません。 cappedコレクションは自然順序付けを保証するため、ObjectID時間フィールドを使用してこれを把握することができますが、ObjectId内の特定のフィールドでクエリを実行するネイティブな方法がないため、すべてのドキュメントを繰り返し処理する必要があります。簡単な(そして率直で正しい)方法は、これを別々に追跡して、キャップ付きのコレクションに挿入するときにアプリから更新することです。 –

+0

私はあなたが今挿入しようとしている解決策である挿入が起こる同じブロック内の変数をインクリメントすることを意味すると思います。 – Milktrader

+0

それは私が意味したことです、はい。これを原子的に行う方法はないことに注意してください。 –

答えて

0

自動化された解決策はありません(「通常の」選択肢について提案したものに類似しています)。

ここでは、グローバルには削除がないということです。そうしないと、カウント方法が機能しません。キャップ付きのコレクションでは、自動削除が行われるため、その方法は機能しません。

もちろん、多くの解決策がありますが、いずれもマニュアルであるため、ここでは詳しく説明していません。

+0

私は削除を想定していません、むしろ、私はキャップ付きのコレクションのソリューションを探しています。解決策がある場合、なぜそれを説明することに意味がありませんか? – Milktrader

0

(潜在的にmongo内であっても、別のコレクション内のドキュメント内に)値を保持し、挿入ごとに値を増やすことができます。

mongostatからの出力を解析し、「最後の秒で挿入」フィールドを取り出して分単位で追加することもできます。

あなたの目標は何ですか?

+0

の目標は1分間につぶやくことです – Milktrader

関連する問題