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