提问人:Rishikesh mahajan 提问时间:12/9/2022 更新时间:12/13/2022 访问量:97
MongoDB索引,请解释一下1和-1的区别
MongoDB indexing , please explain difference between 1 and -1
问:
mongoDB 文档示例有两个字段 userid 和 score。在mongoDB中为userid编制索引时,提供了1个值,并且为score提供了-1,即{userid:1,score:-1}。请在这里解释 mongoDB 索引中 1 和 -1 之间的区别。
我尝试在mongoDB中建立索引以加快查询速度,但是由于对mongoDB中的索引了解较少,我没有得到预期的输出
答:
正如@deceze在他们的评论中所建议的那样,该问题的基本答案在文档中有所提及。答案是该值决定了键是升序 () 还是降序 ()。但这实际上意味着什么,它重要吗?1
-1
许多数据库使用一种 B 树数据结构作为其(标准)索引的主干。这些数据结构本质上是有序的。此特定属性是使它们成为支持各种数据库查询的理想选择的原因之一。例如,它允许他们绑定范围扫描(例如 $lte),因为它知道一旦扫描到超过请求的最大值的第一个键,索引中将不再有匹配值。同样,如果索引的定义与客户端请求的排序顺序兼容,则数据库在扫描索引时可以“免费”满足排序。
对于单个字段索引以及单个字段的排序,索引定义中指定的方向无关紧要。这是因为索引可以在任一方向上遍历。因此,如果您的索引处于打开状态,但排序处于打开状态,则数据库可以选择向后遍历索引以满足请求的排序。{ timestamp: 1 }
{ timestamp: -1 }
当涉及复合排序时,方向性变得很重要。如果将索引定义为 ,则数据库将效率降低或完全无法使用它来满足 上的排序。这是构建索引的基础 b 树数据结构结构的直接结果。有关详细信息,请参阅文档。{ score: 1, timestamp: 1 }
{ score: 1, timestamp: -1 }
我尝试在mongoDB中建立索引以加快查询速度,但是由于对mongoDB中的索引了解较少,我没有得到预期的输出
这是一个与您实际提出的问题截然不同且更具体的问题。如果某个特定查询正在尝试提高其性能,则发布包含该查询(以及相关输出)的问题可能会有所帮助。这将使我们能够就可操作的步骤提供建议,以帮助您提高操作的性能(或理解为什么不能这样做),而不是对可能与您的问题相关也可能不相关的索引定义进行更广泛的讨论。.explain()
评论