当我们运行未指定任何排序顺序的Mongo find()查询时,数据库在内部使用什么对结果进行排序?
当执行不带参数的find()时,数据库将以自然前向顺序返回对象。
对于标准表,自然顺序并不是特别有用,因为尽管顺序通常接近插入顺序,但不能保证一定如此。但是,对于有上限的集合,可以保证自然顺序为插入顺序。这可能非常有用。
但是,对于标准馆藏(无上限馆藏),使用哪个字段对结果进行排序?是_id字段还是其他?
编辑:
基本上,我想尝试执行的是以下搜索查询:
db.collection.find({"x":y}).skip(10000).limit(1000);
在两个不同的时间点:t1和t2,我将得到不同的结果集:
- 什么时候t1和t2之间没有其他写操作?
- t1和t2之间何时有新的写入?
- 在t1和t2之间添加了新的索引吗?
我已经在临时数据库上运行了一些测试,对于这3种情况,我得到的结果都是相同的(是)-但我想确定一下,并且我肯定我的测试用例不是很全面。