如何索引MongoDB中的两个数组?

TIM*_*MEX 10 database indexing mongodb

db.hello.ensureIndex({"array1":1, "array2":1})
Run Code Online (Sandbox Code Playgroud)

MongoDB不允许这样做,因为他们说"它可能会失控".但是,我知道我的数组永远不会超过3的长度.我怎样才能破解MongoDB以允许一次索引多个数组?

使用复合索引时,任何文档中的索引值中最多只能有一个数组.因此,如果我们在{a:1,b:1}上有索引,则以下文档都可以:

{a:[1,2],b:1} {a:1,b:[1,2]}但是,此文档将无法插入,并显示错误消息"无法索引并行数组":

{a:[1,2],b:[1,2]}索引并行数组的问题是复合键的笛卡尔积中的每个值都必须被索引,这可能会非常快速地失控.

Rem*_*iet 7

您问题的简短答案是:你不知道 唯一可用的选择是将每个唯一对存储为单个数组元素。因此,而不是:

{a:[1,2], b:[8,9]}
Run Code Online (Sandbox Code Playgroud)

你存储

{ab:[[1,8], [1,9], [2,8], [2,9]]}
Run Code Online (Sandbox Code Playgroud)

显然,这有一些缺点,因此,这是否是一个适当的解决方法,实际上取决于您的特定用例。我同意,但是mongo不应仅出于白痴证明而拒绝多个数组索引。对于小/低基数数组,这是一个很好的功能。