Mongo索引哪些文档有嵌套键?

时间:2015-09-17 15:26:59

标签: mongodb indexing mongodb-indexes

我的对象看起来像:

{
  ...
  sources: {
    source_1: { [metadata about source_1] },
    source_z: { [metadata about source_z] },
    source_a: { [metadata about source_a] }
  }
}

如果文档包含来自源的数据,则存在具有该名称的条目。否则它不存在。例如,这只有来自source_a的数据:

{
  ...
  sources: {
    source_a: { [metadata about source_a] }
  }
}

什么索引可以帮助我加快查找包含来自给定来源数据的文档?更确切地说,我不关心源贡献的数据,只关注它包含在内(在sources对象中有一个带有该键的条目)。

我应该为每个来源制作一个索引,例如{"sources.source_z": 1}

想要最有效率,以便不索引源中的所有数据,只是存在它。

1 个答案:

答案 0 :(得分:1)

如果您的资源数量达到数百个,我会将文档的结构更改为以下内容。否则,您必须为每个源值创建索引,这是不切实际的:

{
  ...
  sources: [
    {type: "source_1", data: {...}},
    {type: "source_z", data: {...}},
    {type: "source_a", data: {...}}
  ]
}

使用此数据结构,我将在sources.type字段上创建索引。