索引可以让查询更快。如果没有索引,查询文档时时,MongoDB必须扫描集合的每个文档。这种扫描效率非常低,MongoDB需要处理大量数据。
索引针对特定字段或一组字段创建。
ensureIndex() 方法
要创建索引,可使用ensureIndex()
方法。
语法
ensureIndex()
方法的基本语法如下:
db.COLLECTION_NAME.ensureIndex({KEY:1})
这里的键是要创建索引的字段,1表示按升序创建索引,-1表示降序。
例子
db.mycol.ensureIndex({"title":1})
在ensureIndex()
方法中,可以传递多个字段,该方法将在多个字段上创建索引。
db.qikegu.ensureIndex({"title":1,"description":-1})
ensureIndex()
方法还接受其他一些可选参数,如下所示:
参数 | 类型 | 描述 |
---|---|---|
background | Boolean | 在后台构建索引,以便构建索引不会阻塞其他数据库活动。指定true在后台生成,默认值为false。 |
unique | Boolean | 创建一个唯一索引。指定true以创建唯一索引,默认值为false。 |
name | string | 索引的名称。如果未指定,MongoDB将通过连接索引字段的名称和排序顺序生成索引名称。 |
dropDups | Boolean | 在可能具有重复项的字段上创建唯一索引。MongoDB只索引键的第一次出现,并从包含该键的后续出现的集合中删除所有文档。指定true以创建唯一索引。默认值为false。 |
sparse | Boolean | 如果为真,则索引仅引用具有指定字段的文档。这些索引使用更少的空间,但在某些情况下(特别是排序)表现不同。默认值为false。 |
expireAfterSeconds | integer | 指定一个值(以秒为单位)作为TTL,用于控制MongoDB在这个集合中保留文档的时间。 |
v | index version | 索引版本号。默认索引版本取决于创建索引时运行的MongoDB版本。 |
weights | document | 权重是一个从1到99,999的数字,表示该字段相对于其他索引字段的重要性。 |
default_language | string | 对于文本索引,用于确定停止词列表,词干和记号赋予器规则的语言。默认值是english。 |
language_override | string | 对于文本索引,在包含的文档中指定字段的名称,即覆盖默认语言的语言。默认值是language。 |