Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb Mongo:如何实现严格的FIFO数据检索?_Mongodb_Fifo - Fatal编程技术网

Mongodb Mongo:如何实现严格的FIFO数据检索?

Mongodb Mongo:如何实现严格的FIFO数据检索?,mongodb,fifo,Mongodb,Fifo,我有一个mongo集合,我想以先进先出(FIFO)的顺序检索。我们每秒批量导入几百个任务,据我所知,在同一秒钟内导入的文档不一定按照插入的顺序检索 引自: ObjectId值的顺序与 生成时间在一秒钟内并不严格。如果多个 系统,或单个系统上的多个进程或线程生成 值,在一秒钟内;ObjectId值不代表 严格的插入顺序。客户端之间的时钟偏移也会导致 由于客户端驱动程序生成 ObjectId值,而不是mongod进程 我的问题是:在mongo中是否有确保严格FIFO的常见做法?目前,我们试图添加一个

我有一个mongo集合,我想以先进先出(FIFO)的顺序检索。我们每秒批量导入几百个任务,据我所知,在同一秒钟内导入的文档不一定按照插入的顺序检索

引自:

ObjectId值的顺序与 生成时间在一秒钟内并不严格。如果多个 系统,或单个系统上的多个进程或线程生成 值,在一秒钟内;ObjectId值不代表 严格的插入顺序。客户端之间的时钟偏移也会导致 由于客户端驱动程序生成 ObjectId值,而不是mongod进程


我的问题是:在mongo中是否有确保严格FIFO的常见做法?目前,我们试图添加一个新的键w/纳秒,但添加一整列只是为了确保FIFO似乎有点过分。任何想法都值得赞赏

我认为您的索引想法是正确的。您是否需要所有文档在收藏中保留不确定的时间?如果没有,请查看封顶集合和可裁剪游标。我在MongDB DC上做了一个关于将MongoDB转变为队列代理的演讲:正如Rob所建议的,您可以寻找capped集合来获得插入顺序,但它对集合大小有一个限制。或者您可以查找
$natural
排序顺序。注意:如果由于更新导致文档移动,则此排序顺序将不同于插入顺序。另一个选项是使用零的MongoDB时间戳作为插入文档的第一个字段。然后(在服务器上)将填充一个单调递增的值:我从来没有使用过这个特性,所以。。。