文档数据库服务 DDS-创建和管理索引:创建索引

时间:2025-01-26 10:36:40

创建索引

  1. DDS使用如下命令创建索引:

    db.collection.createIndex(keys, options)

    • key 值为你要创建的索引字段,1 为指定按升序创建索引,-1代表降序创建索引。
    • options接收可选参数,常用可选参数列表如下:

      Parameter

      Type

      Description

      background

      Boolean

      默认值为false。

      建索引过程会阻塞其它数据库操作,background可指定以后台方式创建索引。

      unique

      Boolean

      默认值为false

      建立的索引是否唯一。指定为true创建唯一索引。

      name

      string

      索引的名称。如果未指定,MongoDB的通过连接索引的字段名和排序顺序生成一个索引名称。

      expireAfterSeconds

      integer

      指定一个以秒为单位的数值,完成 TTL设定,设定集合的生存时间。

  2. 创建索引。

    • 单字段索引(Single Field Index)

      db.user.createIndex({"name": 1})

      上述语句针对name创建了单字段索引,其能加速对name字段的各种查询请求,是最常见的索引形式,DDS默认创建的id索引也是这种类型,{"name": 1} 代表升序索引,也可以通过{"name": -1}来指定降序索引,对于单字段索引,升序/降序效果是一样的。

    • 复合索引(Compound Index)

      复合索引是单子索引的升级版本,它针对多个字段联合创建索引,先按第一个字段排序,第一个字段相同的文档按第二个字段排序,依次类推。

      db.user.createIndex({"name": 1, "age": 1} )

    • 多键索引
      • 当索引的字段为数组时,创建出的索引称为多键索引。
      • 多键索引会为数组的每个元素建立一条索引。

      如果为user集合加入一个habit字段(数组)用于描述兴趣爱好,需要查询有相同兴趣爱好的人就可以利用habit字段的多键索引。

      {“name” : “jack”, “age” : 19, habit: [“football, runnning”]} //这是person表的一条用户信息。

      db.user.createIndex( {"habit": 1} ) //自动创建多key索引

      db.user.find( {"habit": "football"} ) //查询有相同兴趣爱好的人

  3. 查看集合索引。

    db.user.getIndexes()

  4. 删除集合所有索引。

    db.user.dropIndexes()

  5. 删除集合指定索引。如下方式删除user集合中"name"索引。

    db.user.dropIndex({"name": 1})

support.huaweicloud.com/devg-dds/dds_devg_0020.html