Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在mongo db中检索下一个N条记录_Java_Mongodb_Indexing_Database_Nosql - Fatal编程技术网

Java 在mongo db中检索下一个N条记录

Java 在mongo db中检索下一个N条记录,java,mongodb,indexing,database,nosql,Java,Mongodb,Indexing,Database,Nosql,我需要一个调度程序作业,它将每5分钟执行一次,并处理来自mongodb集合的下100条记录。它应该从首先插入的文档开始。因此,在第一次运行中,我可以按升序对数据进行排序,并获得前100个文档。但是,对于连续运行,如何检索下100条给出最后处理文档对象id的记录?(我不知道如何在这里使用对象id,因为它是一个具有不同参数的生成字符串……我没有定义任何其他id。) 如果这不是从mongodb检索大型数据集记录的好方法,请建议更好的方法 每个文档如下所示: { "_id" : { "$oid" : "

我需要一个调度程序作业,它将每5分钟执行一次,并处理来自mongodb集合的下100条记录。它应该从首先插入的文档开始。因此,在第一次运行中,我可以按升序对数据进行排序,并获得前100个文档。但是,对于连续运行,如何检索下100条给出最后处理文档对象id的记录?(我不知道如何在这里使用对象id,因为它是一个具有不同参数的生成字符串……我没有定义任何其他id。)

如果这不是从mongodb检索大型数据集记录的好方法,请建议更好的方法

每个文档如下所示:

{ "_id" : { "$oid" : "51ff17c8e4b02969f18e72bb"} , "source_of_info" : "somesource" , 
"entityinfo" : [ { "user" : "Alfredo Vela Zancada" , "social_network_entity_id" : 
 364221775325822977 , "text" : "blah blah blah" , "created_at" : { "$date" : "2013-08-
 05T03:10:12.000Z"}}] , "relatedURLs" : [ { "url" : "http://t.co/swqP3FYQt5" 
 ,"expanded_url" : "http://ow.ly/nCkIS"}]}

谢谢。

如果您跟踪正在进行的迭代,您可以使用以下内容:

db.users.find().limit(100).skip(1200)


另一种解决方案可能是为每个条目添加一个“已处理”标志。默认为false。然后,在得到下一个100(其中processed为false)时进行查找和修改,然后将其修改为true。

如果您跟踪正在进行的迭代,您可以使用以下方法:

db.users.find().limit(100).skip(1200)


另一种解决方案可能是为每个条目添加一个“已处理”标志。默认为false。然后在得到下一个100时进行查找和修改,其中processed为false,然后将它们修改为true。

您在排序什么?您的模式是什么样子的?是否定期添加新文档?这将中断分页。从不同的计划程序,文档将定期添加。所以我想处理最旧的文档,然后我就不需要担心新添加的文档了。因为每次运行时,我都会处理最旧的100个文档。我计划按社交网络id排序,对于新添加的文档,它总是大于现有文档。但它没有模式,因此无法使用它获取数据。这里没有分页的东西,我只需要处理所有的记录。这个问题现在可以从暂停状态中去掉了,我想…你需要分组或分页处理数据(100)。如果您不能将每个文档标记为已处理,则会出现错误。至少需要2个键来排序和筛选,因为时间戳不能保证是唯一的。如果你能高效、准确地创建一个索引字段,我会选择索引字段。你在排序什么?您的模式是什么样子的?是否定期添加新文档?这将中断分页。从不同的计划程序,文档将定期添加。所以我想处理最旧的文档,然后我就不需要担心新添加的文档了。因为每次运行时,我都会处理最旧的100个文档。我计划按社交网络id排序,对于新添加的文档,它总是大于现有文档。但它没有模式,因此无法使用它获取数据。这里没有分页的东西,我只需要处理所有的记录。这个问题现在可以从暂停状态中去掉了,我想…你需要分组或分页处理数据(100)。如果您不能将每个文档标记为已处理,则会出现错误。至少需要2个键来排序和筛选,因为时间戳不能保证是唯一的。如果你能高效、准确地创建一个索引字段,我会选择索引字段。