mongodb中的索引-相关字段的一两个索引

时间:2019-03-27 15:40:15

标签: mongodb indexing

我正在mongodb中创建一个集合,它将包含1Tera的实体。目前,对该集合的查询需要5个复合索引。
我知道不建议使用太多索引,但是此集合有一些必须建立索引的频繁查询。
在一种情况下,我正在考虑如何对数据和索引进行建模:
在文件中可以有两种类型的父母。 PARENTA和PARENTB。查询分别针对每种类型。

我有两个选择:

1.为2种父类型保存2个字段,并为每个字段都有一个索引

{
    parentsA: ['parentA1', 'parentA2']
    parentsB: ['parentB1]
}
  1. 保存1个字段,其中将包含类型和一个索引:
    {
        parents: [
            {parentType: 'PARENTA', parentId: 'parentA1'}, 
            {parentType: 'PARENTA', parentId: 'parentA2'}, 
            {parentType: 'PARENTB', parentId: 'parentB1'}
        ]
    }

,然后当我过滤时,我还要添加类型(PARENTA / PARENTB)。

因为我需要1索引而不是2,解决方案2效率更高吗? (考虑到我已经有5个其他复合索引了。)

1 个答案:

答案 0 :(得分:0)

2个索引超过1个几乎可以忽略不计。出于其他原因,更好的建模无疑将是第二个建模,例如:

  1. 当父母的类型增加以防万一以后,您不必更改架构。
  2. 查询属性总是比查询数组中的匹配值更好。