Eli*_*hop 7 mongodb mongodb-scala
我有一些代码检查Mongo集合中的每个对象(迭代不带参数的find()的结果),并对其中的一些进行更改.看起来这不安全:我的更改被保存,但是当我继续迭代光标时,更改对象的子集(10-15%)会再次出现.我没有更改文档ID或任何有索引的内容.
我想通过提前抓取所有文档ID(将光标转换为数组)来避免这个问题,但这些是大型集合,所以我真的想避免这种情况.
我注意到默认情况下find()的结果似乎没有任何已定义的顺序,所以我尝试对游标进行显式排序,{"_ id":1}.这似乎解决了这个问题 - 无论我修改什么,现在都没有出现过两次.但我不知道这是不是一个好的/可靠的方法.据我从文档中可以看出,添加排序并不会使其预先查询所有ID; 如果是这样,那很好,但后来我不知道为什么它会解决这个问题.
改变东西时使用游标是一个坏主意吗?
我正在使用Scala/Casbah,如果这很重要的话.
听起来你想要的是快照查询.以下是有关如何执行此操作的更多信息:
http://www.mongodb.org/display/DOCS/How+to+do+Snapshotted+Queries+in+the+Mongo+Database
| 归档时间: |
|
| 查看次数: |
3838 次 |
| 最近记录: |