0

1000 アイテムのコレクションがあります。それらを日付 (SaveDateUtc フィールド) ごとに並べ替えて上位 10 個を削除したいので、コレクションには最新の 990 個のアイテムが残ります。

Find を実行してから Remove を実行することもできますが、問題はありませんが、Remove 呼び出しだけでこれを実行できた方がはるかに優れています。しかし、クエリを使用して上位 10 を並べ替えて設定する方法が見つかりません。

私の質問は、これを 1 回の呼び出しで実行できますか? (私はC#ドライバーを使用しています)

4

1 に答える 1

0

実際に同様の質問がありました: MongoDB の検索と削除 - 最速の方法

ただし、残念ながらfindAndUpdateレコード数による制限はできません。だからあなたへの私の提案:

  • クエリのフィールドとして使用できるように、いくつかの代理フィールドを導入することができます
  • サーバー側でこの操作を実行する独自の java-script サーバー側関数を作成できます。利点 - 操作はサーバー上で行われ、アトミックです。落とし穴 - 分割されたテーブルでは機能しません。
于 2012-04-27T07:40:59.063 に答える