2014-07-15 26 views
0

我知道如何查询集合。但是我有一个包含100,000个记录的集合,我想每个页面只显示100个项目。然后,用户可以选择接下来的100条记录,等等......node.js mongodb游标循环客户端请求

由于此请求来自用户,因此如何在node.js上保持光标打开以便在客户端请求它时循环接下来的100个项目?

什么是标准做法?

谢谢!

回答

0

你所指的标准做法就像分页。

您不需要始终保持光标一直打开。所有你需要确定的是你从你离开的同一个地方继续。

客户端将保留已经显示的记录数并在游标的skip()函数内使用该数字。


例如:

  • 客户端上设置有10个记录。 record_count = 10
  • 客户端请求更多记录,并在请求中包含record_count
  • 服务器在skip参数的另一个查询中使用提供的record_count
  • 服务器向客户端返回另外10条记录。
  • 客户端更新record_count变量现在是20
  • 冲洗,重复...

请记住,你想要你的结果以某种方式进行排序,以便您的查询将始终返回不同结果(接下来的10条记录)。


我不是太熟悉蒙戈节点驱动程序,但在蒙戈外壳,您可以按如下执行查询:

db.collection.find().sort({ "time": 1 }).skip(record_count).limit(10) 
+0

如果我做什么复杂的查询,比如说 - 关键字搜索。这会在每次用户请求时执行复杂的查询,这不是问题吗? – user3658423

+0

如果这是一个复杂的查询,您只能执行一次实际查询并将结果保存到其他集合中。然后,您将使用我所描述的相同技术来查询包含结果的集合。 – Lix