我有一个名为items的集合,其中包含三个文档。
{
_id: 1,
item: "Pencil"
}
{
_id: 1,
item: "Pen"
}
{
_id: 1,
item: "Sharpner"
}
我如何查询以循环方式获取文档。 考虑我同时收到多个用户请求。
所以一个人应该得到“铅笔”,另一个人应该得到“铅笔”,然后另一个人应该得到“ Sharpner”。
然后从第一个重新开始。
如果可以选择更改架构,那么我也已经准备好了。
答案 0 :(得分:0)
我认为我找到了一种无需更改架构即可执行此操作的方法。它基于skip()
和limit()
。此外,您可以指定保留返回文档的内部排序顺序,但是如指南所述,您不应依赖于此,尤其是因为索引被覆盖会导致性能下降:
$natural
参数根据项目的自然顺序返回项目 在数据库中。此排序是内部实现 功能,您不应依赖其中的任何特定结构 它。
无论如何,这是查询:
db.getCollection('YourCollection').find().skip(counter).limit(1)
counter
在其中存储文档的当前索引。