【发布时间】:2022-01-24 20:04:10
【问题描述】:
当我们在没有指定任何排序顺序的情况下运行 Mongo find() 查询时,数据库内部使用什么对结果进行排序?
根据documentation on the mongo website:
执行不带参数的 find() 时,数据库返回 对象按自然顺序排列。
对于标准表格,自然顺序并不是特别有用,因为, 尽管该顺序通常接近于插入顺序,但它不是 保证是。然而,对于 Capped Collections,自然顺序是 保证是插入顺序。这可能非常有用。
但是对于标准集合(无上限集合),使用什么字段对结果进行排序? 是 _id 字段还是其他字段?
编辑:
基本上,我想我想要得到的是,如果我执行以下搜索查询:
db.collection.find({"x":y}).skip(10000).limit(1000);
在两个不同的时间点:t1和t2,我会得到不同的结果集吗:
- 在 t1 和 t2 之间没有额外的写入时?
- t1 和 t2 之间何时有新的写入?
- 在 t1 和 t2 之间添加了新的索引?
我在一个临时数据库上运行了一些测试,我得到的结果对于所有 3 个案例都是相同的(是) - 但我想确定并且我确定我的测试案例不是很彻底。
【问题讨论】:
标签: mongodb