【发布时间】:2011-06-29 06:46:34
【问题描述】:
db.hello.ensureIndex({"array1":1, "array2":1})
MongoDB 不允许这样做,因为他们说“它可能会失控”。但是,我知道我的数组长度永远不会超过 3。如何破解 MongoDB 以允许一次索引多个数组?
当使用复合索引时,最多 任何文档中的索引值之一 可以是一个数组。所以如果我们有一个 {a: 1, b: 1} 上的索引,以下 文件都很好:
{a: [1, 2], b: 1} {a: 1, b: [1, 2]} 但是,该文档将无法 被插入,并带有错误消息 “无法索引并行数组”:
{a: [1, 2], b: [1, 2]} 问题 索引并行数组是 的笛卡尔积中的每个值 复合键必须是 索引,这可能会失控 很快。
【问题讨论】:
-
你确定你需要两个数组的索引吗?如果您已经对其中一个有很高的选择性,那可能就足够了。
-
@Thilo ...第一个数组通常有大约 100 个元素。第二个数组有大约 2-3 个元素。你认为我需要索引第二个数组吗?
-
@TIMEX 不要索引第二个数组,看看它是如何使用解释命令执行的。
-
@Joe 如果我现在没有任何数据怎么办(数据库仅用于测试)。
-
两个字段中有多少不同的值?如果仅对其中一个索引进行过滤就可以消除 95% 的文档,那就足够了。