在 Mongodb 中使用集合作为循环的最佳方式是什么

joh*_*ena 6 round-robin mongodb

我有一个名为 items 的集合,其中包含三个文档。

{
  _id: 1,
  item: "Pencil"
}
{
  _id: 1,
  item: "Pen"
}
{
  _id: 1,
  item: "Sharpner"
}
Run Code Online (Sandbox Code Playgroud)

我如何查询以循环方式获取文档?考虑一下我同时收到多个用户请求。

所以一个人应该得到Pencil ,另一个人会得到Pen,然后另一个人会得到Sharpner

然后从第一个重新开始。

如果改变模式是一种选择,我也准备好了。

Mar*_*ara 0

我想我找到了一种无需更改架构即可完成此操作的方法。它基于skip()limit()。此外,您可以指定保留返回文档的内部排序顺序,但正如指南所说,您不应该依赖于此,特别是因为由于索引被覆盖而导致性能下降:

$natural参数根据项目在数据库中的自然顺序返回项目。此排序是内部实现功能,您不应依赖其中的任何特定结构。

无论如何,这是一个查询:

db.getCollection('YourCollection').find().skip(counter).limit(1)
Run Code Online (Sandbox Code Playgroud)

其中counter存储文档的当前索引。