Mongodb Mongo:如何实现严格的FIFO数据检索?
我有一个mongo集合,我想以先进先出(FIFO)的顺序检索。我们每秒批量导入几百个任务,据我所知,在同一秒钟内导入的文档不一定按照插入的顺序检索 引自: ObjectId值的顺序与 生成时间在一秒钟内并不严格。如果多个 系统,或单个系统上的多个进程或线程生成 值,在一秒钟内;ObjectId值不代表 严格的插入顺序。客户端之间的时钟偏移也会导致 由于客户端驱动程序生成 ObjectId值,而不是mongod进程Mongodb Mongo:如何实现严格的FIFO数据检索?,mongodb,fifo,Mongodb,Fifo,我有一个mongo集合,我想以先进先出(FIFO)的顺序检索。我们每秒批量导入几百个任务,据我所知,在同一秒钟内导入的文档不一定按照插入的顺序检索 引自: ObjectId值的顺序与 生成时间在一秒钟内并不严格。如果多个 系统,或单个系统上的多个进程或线程生成 值,在一秒钟内;ObjectId值不代表 严格的插入顺序。客户端之间的时钟偏移也会导致 由于客户端驱动程序生成 ObjectId值,而不是mongod进程 我的问题是:在mongo中是否有确保严格FIFO的常见做法?目前,我们试图添加一个
我的问题是:在mongo中是否有确保严格FIFO的常见做法?目前,我们试图添加一个新的键w/纳秒,但添加一整列只是为了确保FIFO似乎有点过分。任何想法都值得赞赏我认为您的索引想法是正确的。您是否需要所有文档在收藏中保留不确定的时间?如果没有,请查看封顶集合和可裁剪游标。我在MongDB DC上做了一个关于将MongoDB转变为队列代理的演讲:正如Rob所建议的,您可以寻找capped集合来获得插入顺序,但它对集合大小有一个限制。或者您可以查找
$natural
排序顺序。注意:如果由于更新导致文档移动,则此排序顺序将不同于插入顺序。另一个选项是使用零的MongoDB时间戳作为插入文档的第一个字段。然后(在服务器上)将填充一个单调递增的值:我从来没有使用过这个特性,所以。。。