Ruby操作MongoDB(进阶六)-索引Indexing

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

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

  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_version 2维索引的版本
:bits 2位索引中设定经纬度的最大边界
:max 2维索引的经纬度的最大边界值
:min 2维索引的经纬度的最小边界值
: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
时间: 2024-08-01 22:44:20

Ruby操作MongoDB(进阶六)-索引Indexing的相关文章

Ruby操作MongoDB(进阶五)-数据库管理Administration

通过前面四章的学习,本章我们开始学习Ruby操作MongoDB数据库中的数据管理Administration 数据库相关 Ruby驱动为数据库对象执行命令,获取集合列表,和管理任务提供了多种多样的帮助. 1.1 获取集合列表List Collection 通过collections和collection_names两个指令可以获取集合列表和集合的名字.例如: client=Mongo::Client.new(['127.0.0.1:27017'],:database=>'film') datab

Ruby操作MongoDB(进阶)-CRUD操作

MongDB数据库的使用离不开CRUD操作.什么是CRUD,就是创建文档,读取文档信息,更新文档和删除文档. key-value键值对标记 在MongoDB的Ruby驱动中,Key_value键值多次出现.而且有时会出现语法上的巧合,这取决于在使用的Ruby版本中如何申明. 在文档创建步骤中,1.9及之后版本支持以下语法: document={name:"Tom",age:20}. 但是如果你使用的是2.2或者更高的版本,你可以用双引号将你的key包起来.如: document={&q

Ruby操作MongoDB(进阶七)-排序规则Collations

本篇博文从三个方面进行排序规则Collations的讲解.其中包括概览,使用方式和支持排序的操作.首先我们对排序规则进行一个概览性的介绍 排序规则概览 排序规则为特定语言习惯中的字符串比较提供一套规则,例如,在加拿大法语中,给定词汇的最后一个重音节决定了其排序顺序. 考虑下述法语词汇: cote < coté < cte < cté 使用加拿大法语排序规则,得到如下排序结果 cote < cte < coté < cté 如果没有指定排序规则,MongoDB使用简单的二

Ruby操作MongoDB(进阶八)-聚合操作Aggregation

上篇博文讲述了排序规则collations的操作和设置方式.顺带介绍了一部分聚合aggregation的设置方式.本文继续介绍聚合操作. 聚合框架的操作处理完数据记录后在返回计算结果.集合操作将来源于多个文档的值归类到一起,这样就可疑在被归类的数据上进行多种操作,然后返回一个单独的结果 1 聚合管道 聚合管道是用于数据聚合的一个框架,是以数据处理管道概念为原型.将文档输入一个多级管道后,可疑将文档转换为聚合的结果.下面以restaurants作为数据集,通过将餐馆类归类,我们就可以使用聚合管道在

Ruby操作MongoDB(进阶十)--文本搜索text search

MongoDB数据库对于文本内容之上搜索查询操作上提供了文本索引,文本索引可以应用于所有的字符串或者字符数组的字段.为了在Ruby驱动上使用文本搜索,首先使用indexes.create_one()方法创建一个文本索引.下面的实例中,在test数据库中的restaurants集合后果,为name字段创建了一个文本索引. client=Mongo::Client.new(['127.0.0.1:27017'],:database=>'test') client[:restaurants].inde

Ruby操作MongoDB(进阶)-创建数据库客户端连接

在Ruby的MongoDB2.4.3驱动版本中,通过创建一个Mongo::Client对象来构建一个Ruby的数据库连接.Mongo::Client构造器提供两种构造方式:一是通过提供主机列表和一些可选参数,另外还有通过一个连接URI.创建好的数据库连接默认连接到admin数据库. 1.使用Mongo::Client创建数据库客户端连接 1.1. 单服务器模式创建数据库连接 在单服务器模式下创建数据库连接,只需提供一个主机连接参数.另外,还可以通过消除自动发现步骤强制将集群拓扑转换为单机模式.可

Ruby操作MongoDB(进阶九)-批量操作Bulk Operations

本篇文章主要讲解批量操作的相关知识.主要会讲解下面的方法的使用insert_one,insert_many,delete_one,delete_many,replace_one,update_one,update_many七个方法. 批量写入的API在一次方法调用中会想服务器发送一个操作的列表.如果你设定了ordered参数,就可以确保你传递的操作的执行顺序. 批量写方法有三个参数:第一是一个操作列表,第二是boolean类型的ordered参数,默认值是true:第三个是写相关参数,默认为集合

mongodb学习(六)索引

准备工作: 先插入100万条数据 for(i=0;i<=1000000;i++){ db.users.insert({ "i":i, "username":"user"+i, "age":Math.floor(Math.random()*120), "created":new Date() }) } 1. 创建索引: 数据量越大创建索引时间越长 db.users.ensureIndex({"

Windows下如何实现Ruby操作MongoDB(环境安装配置)

最近在研究使用非关系型数据库,当前使用的是文档型数据库MongoDB.涉及到在Windows环境下使用Ruby操作MongoDB数据库.因此需在Windows环境下安装Ruby开发环境. 按照如下步骤进行操作: 1. 首先安装ruby 到http://rubyinstaller.org/downloads/下载相关软件:下载对应电脑所需的RubyInstaller版本.作者选中的是Ruby2.3.3(x64),url对应界面如下图所示: 成功下载安装包后,直接点击安装,可勾选所有选项,安装时必须