0

我有一个包含 1000 个项目的集合。我想按日期对它们进行排序(SaveDateUtc 字段)并删除其中的前 10 个,所以我的收藏中剩下 990 个最新项目。

我可以先查找,然后再删除,没问题,但如果我可以通过删除调用来做到这一点会更好。但我找不到通过查询排序和设置前 10 名的方法。

所以我的问题是,我可以在一个电话中做到这一点吗?(我正在使用 C# 驱动程序)

4

1 回答 1

0

实际上有类似的问题:MongoDB find and remove - the faster way

但不幸findAndUpdate的是不能被记录数限制。所以我对你的建议:

  • 您可以引入一些代理字段,以便您可以将其用作查询中的字段
  • 您可以编写自己的 java-script 服务器端函数,该函数将在服务器端执行此操作。好处 - 操作在服务器上完成,它是原子的。陷阱 - 它不适用于分片表。
于 2012-04-27T07:40:59.063 回答