2011-12-02 60 views
1

我有一个MongoDB的集合称为其认为,像这样的JSON对象问题:如何获得使用MongoDB的连续行集?

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

,我想选择一些号码,说1000,这些问题在一个时间。一旦我处理了这1000个条目,我想继续选择下一个1000条目,等等。

有没有简单的方法来做这种使用MongoDB的行动?我对这项技术很陌生。如果不是,有没有人有一个不同的做法呢?如果这有所帮助,我正在使用Java驱动程序。

谢谢,
克里斯隐蔽

回答

3

另一种做法是:

  1. 设置最后处理的ID = 0

  2. 选择从问题其中id> [最后处理的ID]为了通过ID限制1000

  3. 处理这些行
  4. 设置最后处理的Id = [从当前1000个结果中处理的最后一个ID]
  5. 跳回步骤2

这会比选择所有内容和跳过()结果集更加高效。

或者添加一个“处理”标志的记录,这样就可以分辨哪些记录需要处理,然后查询,其中加工= 0

1

您应该能够使用这个skip()(和limit()),但被警告,因为它是一个昂贵的查询。

因此,假设您的收藏被称为“问题”,是这样的:

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

将返回第一个1000,然后第二个1000点的问题。

+0

大部分时间该解决方案可以完美胜任。但在处理过程中可以将文档写入集合。 – misaxi