在本博文中,我们主要介绍数据库索引。主要包含创建索引,删除索引,列出索引

数据库驱动提供了在集合上创建,删除和查看索引的方法。

  1. 创建索引

  创建索引的操作中,可以一次创建一个索引,也可以一次创建多个索引。在3.0及其以上版本的MongoDB数据库中,多个索引一起创建时是被平行创建出来的。在更早的版本中,多个索引是按照顺序创建的。

   单个索引的创建,使用create_one方法

client=Mongo::Client.new(['127.0.0.1:27017'],:database=>'film')
client[:actors].indexes.create_one({:name=>1},unique:true)

   多个索引的创建,使用create_many方法。需要注意的是,当一次创建多个索引时,索引的键值必须按照说明通过对应的特定键值对传递。这是因为每个被创建的索引的参数可能是不同的。

client=Mongo::Client.new(['127.0.0.1:27017'],:database=>'film')
client[:actors].indexes.create_many([
       {:key=>{name:1},unique:true},
       {:key=>{label:-1}}])

下面的表中列出了创建索引时可用参数的完整列表

参数参数描述
:background取值为true或者false,明确索引创建的时候是在后台执行还是前台执行
:expire_after从当前时间往后,让文档失效的秒数
:name索引的名字
:sparse确定索引是否稀疏,要么是true要么是false
:storage_engine定义该索引的存储引擎的名字
:version使用的索引格式的版本
:default_language文本索引的默认语言
:language_override覆盖了默认语言时,使用的域的名字
:text_version存储文本索引的格式版本

:weights在文本搜索中指定字段和权重的文档
:sphere_version2维索引的版本
:bits2位索引中设定经纬度的最大边界
:max2维索引的经纬度的最大边界值
:min2维索引的经纬度的最小边界值
:bucket_size将geo haystack索引位置值进行分组是适应的单位数
:partial_filter_expression并行索引表达式过滤器

2. 删除索引

  删除索引,使用dropOne或dropAll

  client=Mongo::Client.new(['127.0.0.1:27017'],:database=>'film')
  client[:bands].index.drop_one('name_1')
  client[:bands],drop_all


3. 列出索引

    client=Mongo::Client.new(['127.0.0.1:27017'],:database=>'film')
    client[:bands].indexes.each do |index|
      p index
    end