📜  MongoDB – 多键索引

📅  最后修改于: 2022-05-13 01:56:58.432000             🧑  作者: Mango

MongoDB – 多键索引

索引是一种特殊的数据结构,用于存储与文档相关的一些信息,以便 MongoDB 可以轻松找到正确的数据文件。它们还存储特定字段或字段集的值,按索引中指定的字段值排序。 MongoDB 允许通过为数组中的每个元素创建索引键来索引保存数组值的字段,这种类型的索引称为多键索引。它支持对数组字段的高效查询。它可以在包含标量值(如字符串、数字等)和嵌套文档的数组上构造。

如何创建多键索引?

在 MongoDB 中,我们可以使用createIndex()方法创建多键索引

句法:

要点:



  • 如果索引字段是数组,那么 MongoDB 将自动为该字段创建多键索引。
  • 不允许将多键索引指定为 Sherd 键索引。
  • 在 MongoDB 中,散列索引不是多键索引。
  • 多键索引不支持 $expr运算符。
  • 在 MongoDB 中,如果过滤器查询为整个数组指定了精确匹配,则 MongoDB 会扫描多键索引以查找 quarry 数组的第一个元素。在扫描多键索引以查找 quarry 数组的第一个元素后,MongoDB 检索那些包含第一个元素的文档,然后过滤它们以查找其数组与给定查询匹配的文档。而不是扫描多键索引来查找整个数组。

例子:

在以下示例中,我们正在使用:

  • 创建多键索引:

现在我们借助字段语言的 createIndex() 方法创建多索引:

db.student.createIndex({language:1})



建立索引后,我们将使用 getIndexes() 方法检查索引:

  • 使用嵌入的文档索引数组:

您可以在包含嵌套文档/对象的数组字段上创建多键索引。

db.student.createIndex({"details.age":1, "details.branch":1})

在这里,我们在“details.age”和“details.branch”字段上创建多键索引。

建立索引后,我们将使用 getIndexes() 方法检查索引:

限制:

  • 创建复合多键索引时,每个索引文档必须最多包含一个索引字段,其值为数组。
  • 如果文档的多个要索引的字段是数组,则不允许创建复合多键索引。
  • 当复合多键索引已经存在时,则不允许插入会破坏限制的文档。
  • 当一个字段是一个文档数组时,你可以索引一个嵌入的文档来创建一个复合索引,但最多一个索引字段可以是一个数组。