📜  在MongoDB中建立索引(1)

📅  最后修改于: 2023-12-03 15:07:54.370000             🧑  作者: Mango

在 MongoDB 中建立索引

什么是索引?

索引是一个数据结构,用于快速在数据库中查找数据。它可以比全表扫描更快地找到符合条件的记录。没有索引的情况下,在表中查找数据将会变得非常缓慢,因为你需要遍历整个表并一行一行地比较,直到找到你需要的记录。

MongoDB 索引与 SQL 数据库索引的区别在于,MongoDB 不仅支持对字段进行索引,还支持针对数组和嵌入式文档的索引。此外,MongoDB 的索引不会影响数据库的表结构。

如何建立索引?

MongoDB 中的索引可以通过调用 createIndex() 方法来建立。

db.collection.createIndex(keys, options)
  • keys:(必需)要创建索引的键和方向。键指定了索引应该建立在哪个字段上。指定一个字段建立单个键索引,指定多个字段建立复合键索引。 如需要,可以向任何键指定方向(升序或降序),例如 { age: 1, name: -1 }
  • options:(可选)各种选项,例如在唯一性、Sparse 索引、自定义名称的是否有特定的字段等方面控制索引的行为。
类型索引
单键索引

在如下示例中,我们按 status 字段建立单键索引:

db.collection.createIndex( { status: 1 } )
复合键索引

通过建立按多个字段排序的索引,你可以进一步加快读取数据的效率。仅当所有多个键的顺序完全匹配时,MongoDB 才会视为满足了查询条件。

db.collection.createIndex( { status: 1, age: -1 } )
数组索引
数组索引

考虑到数组作为一个整体处理的频率,将数组作为一个值在索引结构中添加是有益的,只要平常你使用数组非常多,你就需要为其建立索引。

db.collection.createIndex( { tags: 1 } )
复合数组索引

还可以对数组中的字段建立索引,如下所示:

db.collection.createIndex( { "perfered_tags.name": 1 } )
文本索引

这是一种全文索引技术,利用文档中的单词、语句、单词的组合和标点来生成有索引储存的索引。

创建文本索引

你可以通过指定文本索引的字段并使用 createIndex() 方法来创建文本索引。下面是一个例子:

db.collection.createIndex( {content: "text"} )
搜索文本索引

MongoDB 后来提供了 $text 查询运算符,可以对全文索引的集合进行全文搜索。如下所示:

db.collection.find( { $text: { $search: "word" } } )
参考文献

https://docs.mongodb.com/manual/indexes/

https://docs.mongodb.com/manual/core/index-text/