gpt4 book ai didi

mongodb - 如何确保 MongoDB 中数组第一个元素的索引以加快查询速度?

转载 作者:可可西里 更新时间:2023-11-01 09:15:52 25 4
gpt4 key购买 nike

确保数组元素的索引对我来说没有按预期工作。

例如具有以下数据

> db.test.find()
{ "_id" : 7891236423, "arr" : [ "a", "b", "c" ] }
{ "_id" : 7891236424, "arr" : [ "b", "c", "d" ] }
{ "_id" : 7891236425, "arr" : [ "b", "c", "a" ] }
>

当没有索引时,以下查询按预期工作

> db.test.find({"arr.0":"a"})
{ "_id" : 7891236423, "arr" : [ "a", "b", "c" ] }
>

但如果我尝试在 arr.0

上创建索引,相同的查询不会返回结果
> db.test.ensureIndex({"arr.0":1})
> db.test.find({"arr.0":"a"})
>

我不明白这里发生了什么,在我看来,索引永远不会对返回的数据产生影响。还是应该?

这是一个错误吗?还是索引滥用?对于此行为的任何解释,我会很高兴,对于如何在单个数组元素上实现索引的任何提示,我会更高兴。

PS:我知道可以在arr上创建索引,在查询arr.0之前先查询arr,这是有效的给定示例的解决方法。但是,一旦我需要按 arr.0 对大量数据进行排序,这就无济于事了(MongoDB 为此需要一个索引)

最佳答案

这是 1.8 及之前版本中使用的 v0 索引的一个已知问题。 2.0+ 中的新 v1 索引支持这一点。升级到 2.0.3 应该可以解决您的问题。您可以在此处找到有关升级到 2.0 的说明:http://www.mongodb.org/display/DOCS/2.0+Release+Notes#2.0ReleaseNotes-Upgrading

关于mongodb - 如何确保 MongoDB 中数组第一个元素的索引以加快查询速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9485584/

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