当我们在没有指定任何排序顺序的情况下运行Mongo find()查询时,数据库内部使用什么来对结果进行排序?
执行不带参数的find()时,数据库以正向自然顺序返回对象.
对于标准表,自然顺序不是特别有用,因为尽管订单通常接近于订单,但不能保证.但是,对于Capped Collections,自然顺序保证为插入顺序.这非常有用.
但是对于标准集合(非上限集合),使用哪个字段对结果进行排序?它是_id字段还是别的什么?
编辑:
基本上,我想我想要的是,如果我执行以下搜索查询:
db.collection.find({"x":y}).skip(10000).limit(1000);
Run Code Online (Sandbox Code Playgroud)
在两个不同的时间点:t1和t2,我会得到不同的结果集:
我已经在临时数据库上运行了一些测试,我得到的结果与所有3个案例相同(是) - 但我想确定并且我确信我的测试用例不是很彻底.
是否有一个简单的或优雅的方法(或我可以写的查询)来检索集合中(最后更新的文档的)最后更新的时间戳。我可以编写这样的查询来查找最后插入的文档
db.collection.find().limit(1).sort({$natural:-1})
Run Code Online (Sandbox Code Playgroud)
但我需要有关最新更新文档的信息(可以是插入内容或更新内容)。
我知道一种方法是从集合中查询oplog集合中的最后一条记录。但是考虑到oplog的大小可能非常大(似乎也不可靠,因为它是一个受限制的集合),这似乎是一项昂贵的操作。有一个更好的方法吗?
谢谢!