2013-03-17 70 views
1

基本问题。 mongodb find命令是否总是按照添加到集合中的顺序返回文档?如果没有如何以正确的顺序执行选择文档? 排序?但是,如果同时添加的文档和创建日期相同的文档相同,但仍然有订单。Mongodb商店和选择顺序

+1

是否http://stackoverflow.com/questions/11599069/what-does-mongo-sort-on-when-no-sort-order-is-specified/11599283答案你的问题? – WiredPrairie 2013-03-17 23:03:51

回答

2

嗯,是的,并不完全。 文档默认按自然顺序排序。这最初是文档存储在磁盘上的顺序,这实际上是将文档添加到集合中的顺序。 但是,这个顺序并不是确定性的,因为一旦这些文档在更新操作之后增长,文档就可能在磁盘上移动,并且不能再适合当前空间。这样,初始(插入)顺序可能会改变。

只要_id是ObjectId类型,保证插入顺序排序的方法是排序{_id:1}。这将返回按升序排序的文档。

写入操作不会同时发生。写入锁定在数据库级别(V 2.4及以上)。 _id的前四个字节是插入时间戳,最后3位是随机计数器,用于区分具有相同时间戳的ObjectId实例(并对其进行排序)。

_id字段默认索引

+0

如果我按{_id:1}排序,引擎是否会应用一些内部逻辑以正确的顺序排序文档? – WHITECOLOR 2013-03-17 23:13:15

+0

是的,按ID排序意味着插入顺序 – 2013-03-17 23:16:45

+0

只要'id'表示'_id'字段 – 2013-03-17 23:53:04