我确信这很简单,但我只是想确定一下。 find()
是否有一些搜索和投影标准与在其上应用sort({$natural:1})
相同?
此外,默认的自然排序顺序是什么?它与sort({_id:1})
有何不同,比如说?
答案 0 :(得分:3)
db.collection.find()
的结果与db.collection.find().sort({$natural:1})
{"$natural" : 1}
强制查找查询执行表扫描(默认排序),在排序中使用时指定硬盘顺序。
当您更新文档时,mongo可以将您的文档移动到另一个硬盘位置。
例如插入文档如下
{
_id : 0,
},
{
_id : 1,
}
然后更新:
db.collection.update({ _id : 0} , { $set : { blob : BIG DATA}})
当您执行查找查询时,您将获得
{
"_id" : 1
},
{
"_id" : 0,
"blob" : BIG DATA
}
如您所见文档的顺序已更改=> 默认顺序不是_id
答案 1 :(得分:1)
如果您没有指定排序,那么mongodb find()
将按照它们存储在磁盘上的顺序返回文档。磁盘上的文档存储可能与插入顺序一致,但并不总是如此。还值得注意的是,磁盘上文档的位置可能会发生变化。例如,在更新的情况下,如果需要,mongodb可以将文档从一个地方移动到另一个地方。
如果是索引 - 默认顺序将是查询使用索引时找到索引的顺序。
$natural
是在磁盘上找到文档的顺序。
建议您明确指定排序以确保排序顺序。