如何使用MongoDB获取连续的行集?

时间:2011-12-02 00:22:10

标签: java mongodb

我有一个名为Questions的MongoDB Collection,其中包含如下所示的JSON对象:

{
    "_id"      : "49902cde5162504500b45c2c", 
    "question" : "Who are you?",
    "category" : "Personal"
}

我试图一次选择一些数字,比如说1000个。一旦我处理了这1000个条目,我想继续选择接下来的1000个条目,依此类推。

使用MongoDB有一种简单的方法来执行此类操作吗?我对这项技术有点新意。如果没有,有没有人有一个很好的方式这样做?我正在使用Java驱动程序,如果这有所不同。

谢谢,
克里斯科弗特

2 个答案:

答案 0 :(得分:3)

另一种方法是:

  1. 设置上次处理的ID = 0

  2. 从id> gt的问题中选择[上次处理的ID]按ID限制1000

  3. 排序
  4. 处理这些行
  5. 设置上次处理的ID = [从当前1000个结果处理的最后一个ID]
  6. 跳回第2步
  7. 这比选择所有内容并跳过()超过结果集更有效。

    或者在记录中添加“已处理”标志,这样您就可以区分哪些记录需要处理,然后查询处理的位置= 0。

答案 1 :(得分:1)

您应该可以使用skip()(和limit()),但请注意,因为这是一个昂贵的查询。

因此,假设您的收藏被称为“问题”,例如:

db.questions.find().limit(1000)
db.questions.find().skip(1000).limit(1000)

将返回前1000个然后返回第1000个问题。