gpt4 book ai didi

mongodb - MongoDB 如何在一个集合中排序他们的文档?

转载 作者:IT老高 更新时间:2023-10-28 13:07:31 24 4
gpt4 key购买 nike

在我的 User 集合中,MongoDB 通常按照我创建它们的顺序对每个新文档进行排序:最后一个创建的是集合中的最后一个。但是我检测到另一个集合,其中我创建的最后一个集合在 27 个文档之间的位置为 6。

这是为什么呢?

MongoDB 集合中每个文档的顺序是什么?

最佳答案

它叫做 natural order :

natural order

The order in which the database refers to documents on disk. This is the default sort order. See $natural and Return in Natural Order.

这证实了您通常按照插入的顺序获取它们,但这并不能保证——正如您所注意到的那样。

Return in Natural Order

The $natural parameter returns items according to their natural order within the database. This ordering is an internal implementation feature, and you should not rely on any particular structure within it.

Index Use

Queries that include a sort by $natural order do not use indexes to fulfill the query predicate with the following exception: If the query predicate is an equality condition on the _id field { _id: <value> }, then the query with the sort by $natural order can use the _id index.

MMAPv1

Typically, the natural order reflects insertion order with the following exception for the MMAPv1 storage engine. For the MMAPv1 storage engine, the natural order does not reflect insertion order if the documents relocate because of document growth or remove operations free up space which are then taken up by newly inserted documents.

显然,就像提到的文档一样,您应该依赖此默认顺序(此顺序是内部实现功能,您不应依赖其中的任何特定结构。)。

如果您需要排序,请使用 sort solutions .


基本上,以下两个调用应该以相同的顺序返回文档(因为默认顺序是 $natural):

db.mycollection.find().sort({ "$natural": 1 })
db.mycollection.find()

如果您想按其他字段排序(例如 name ),您可以这样做:

db.mycollection.find().sort({ "name": 1 })

关于mongodb - MongoDB 如何在一个集合中排序他们的文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33018048/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com