MongoDB将集合用作轮询的最佳方法是什么

时间:2018-07-06 16:20:28

标签: mongodb round-robin

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

{
  _id: 1,
  item: "Pencil"
}
{
  _id: 1,
  item: "Pen"
}
{
  _id: 1,
  item: "Sharpner"
}

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

所以一个人应该得到“铅笔”,另一个人应该得到“铅笔”,然后另一个人应该得到“ Sharpner”。

然后从第一个重新开始。

如果可以选择更改架构,那么我也已经准备好了。

1 个答案:

答案 0 :(得分:0)

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

  

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

无论如何,这是查询:

db.getCollection('YourCollection').find().skip(counter).limit(1)

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