当我们在没有指定任何排序顺序的情况下运行 Mongo find() 查询时,数据库内部使用什么对结果进行排序?
根据mongo 网站上的文档:
当执行不带参数的 find() 时,数据库会以正向自然顺序返回对象。
对于标准表,自然顺序并不是特别有用,因为尽管顺序通常接近插入顺序,但不能保证如此。但是,对于 Capped Collections,自然顺序保证为插入顺序。这可能非常有用。
但是对于标准集合(无上限集合),使用什么字段对结果进行排序?是_id字段还是其他什么?
编辑:
基本上,我想我想要得到的是,如果我执行以下搜索查询:
db.collection.find({"x":y}).skip(10000).limit(1000);
在两个不同的时间点:t1和t2,我会得到不同的结果集:
- 当 t1 和 t2 之间没有额外的写入时?
- t1 和 t2 之间何时有新的写入?
- 在 t1 & t2 之间添加了新的索引?
我在一个临时数据库上运行了一些测试,我得到的结果对于所有 3 个案例都是相同的(是)——但我想确定并且我确信我的测试用例不是很彻底。