Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MongoDB中,db.collection.find()与db.collection.find()相同吗?sort({$natural:1})?_Mongodb_Sorting_Pymongo - Fatal编程技术网

在MongoDB中,db.collection.find()与db.collection.find()相同吗?sort({$natural:1})?

在MongoDB中,db.collection.find()与db.collection.find()相同吗?sort({$natural:1})?,mongodb,sorting,pymongo,Mongodb,Sorting,Pymongo,我相信这很简单,但我只是想确定一下。具有某种搜索和投影条件的find()是否与对其应用排序({$natural:1})相同 另外,默认的自然排序顺序是什么?比如说,它与排序({u id:1})有何不同?db.collection.find()的结果与db.collection.find().sort({$natural:1}) {“$natural”:1}强制查找查询执行表扫描(默认排序),它在排序中使用时指定硬盘顺序 当您更新文档时,mongo可以将您的文档移动到硬盘的另一个位置 例如,按如下

我相信这很简单,但我只是想确定一下。具有某种搜索和投影条件的
find()
是否与对其应用
排序({$natural:1})
相同

另外,默认的自然排序顺序是什么?比如说,它与
排序({u id:1})
有何不同?

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}})
当您执行find查询时,您将得到

{
    "_id" : 1
},
{
    "_id" : 0,
    "blob" : BIG DATA
}

如您所见,文档的顺序已更改=>默认顺序不是按_id

如果未指定排序,则mongodb
find()
将按照文档在磁盘上的存储顺序返回文档。磁盘上的文档存储可能与插入顺序一致,但并非总是如此。还值得注意的是,文档在磁盘上的位置可能会更改。例如,在更新的情况下,如果需要,mongodb可以将文档从一个地方移动到另一个地方

对于索引-如果查询使用索引,则默认顺序将是找到索引的顺序

$natural
是在磁盘上查找文档的顺序


建议您明确指定排序,以确保排序顺序。

这意味着,如果我对生产设置进行了
find()
查询,然后有一个光标,几天后,我再进行一次
find()
并获得另一个光标,在这两个游标中,文档的顺序将不同?当然,假设文档有相当多的更新。如果您更新文档,并且如果更新查询导致移动其中一些文档,那么您将得到不同的结果(顺序不同)。