在 mongoDB 中实现 FIFO 集合的最佳方法是什么?

What is the best way to implement a FIFO collection in mongoDB?

我有一个排序的项目时间序列。每 1 秒我想插入一个包含任意计数的文档:

{ count: Number }

然后每 5 秒我想删除第一个插入的文档,直到这些文档中计数的累计总和大于 10。

所以我有一个这样的列表(集合):

[{ count: 5 }, { count: 3 }, { count: 2 }, { count: 7 }, { count: 8 }]

然后在删除第一个文档后它变成

[{ count: 7 }, { count: 8 }]

因为5 + 3 + 2 == 10我停止删除文档。

保证对列表进行排序,以便仅删除列表开头的元素,并且仅将元素追加到末尾。

实现这样的 FIFO 列表的最佳方法是什么,以便删除元素的复杂度为 O(1),添加元素的复杂度也为 O(1)?

给每个文档添加一个时间戳字段,在查询按时间戳排序时,将当前时间写入其中。

或者,您可以使用 $push and $pop 在单个文档中实现队列。