Ruby2.3.3操作MongoDB入门(Mongo驱动版本2.4.3)

Stella981
• 阅读 554

接着上篇博文,继续学习Ruby操作Mongo数据库,本博文介绍的是MongoDB的基本数据,即数据库的CRUD操作(创建,查询,更新,删除)

1.创建一个集合,插入一个文档

1.1如果是将单个文档插入结果,使用insert_one方法;

选择集合people,操作语句 collection=client[:people]

定义要插入的文档数据和结构,操作语句 doc = { name:'Steve',hobbies:['hiking','tennis','Fly Fishing']}

执行result= collection.insert_one(doc)

执行 result.n,获取插入条数,执行结果如下:

Ruby2.3.3操作MongoDB入门(Mongo驱动版本2.4.3)

1.2 如果是同时插入多个文档,使用insert_many方法:

定义要插入的文档数据,

docs = [ {name: 'Steve1', hobbies: [ 'hiking', 'tennis', 'fly fishing' ] },

        { name: 'Sally', hobbies: ['skiing', 'stamp collecting' ] } ]

执行result= collection.insert_many(docs)

执行result.insert_count查询插入条数,执行结果如下:

Ruby2.3.3操作MongoDB入门(Mongo驱动版本2.4.3)

2. 集合查询

使用find语句开启查询,若不添加任何的查询过滤条件,将返回集合中的所有文档

2.1 不适用任何查询过滤条件

collection.find.each do |document|

2.2 使用查询过滤条件

puts collection.find({name:'Sally'}).first,查询出满足条件的第一条记录,执行结果如下:

Ruby2.3.3操作MongoDB入门(Mongo驱动版本2.4.3)

3. 更新文档

更新单个文档:update_one

更新多个文档:update_many

两个方法,第一个参数为查询条件,查询出要更新的文档;第二个参数是更新数据,使用$set来增加或更新一个或多个特定的域;如果不使用$set,则将查询到的整个文档更新为设定的更新数据;

result = collection.update_one( { 'name' => 'Sally' }, { '$set' => { 'phone_number' => "555-555-5555" } } )

puts collection.find( { 'name' => 'Sally' } ).first

执行结果如下:

Ruby2.3.3操作MongoDB入门(Mongo驱动版本2.4.3)

若不使用$set,则将满足条件的文档全部替换为要更新的数据。

更新多行update_many

result = collection.update_many( {}, { '$set' => { 'age' => 36 } } )

puts result.modified_count

Ruby2.3.3操作MongoDB入门(Mongo驱动版本2.4.3)

4.删除文档

删除单个文档:delete_one

删除多个文档:delete_many

参数为查询条件

删除单条  result = collection.delete_one( name 'Steve' )

删除多条   result = collection.delete_many({ name: /$S*/ }),删除名字name属性以S开始的文档

5.最后,增加一个创建索引的操作

创建单个索引:create_one

创建多个索引:create_many

例:collection.indexes.create_one({ name: 1 }, unique: true)

例:collection.indexes.create_many([
   { key: { name: 1 } , unique: true },
   { key:  { hobbies: 1 } },
 ])

Ruby2.3.3操作MongoDB入门(Mongo驱动版本2.4.3)

执行指令后,index的数目发生了变化

至此,Ruby操作MongoDB的入门操作结束。两篇博文主要讲解了Ruby操作MongoDB数据库的先期准备工作,如何创建数据库连接,如何实现集合文档的创建,查询,更新和删除。并介绍了如何给文档创建索引,从而优化数据库的查询效率。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
Python3:sqlalchemy对mysql数据库操作,非sql语句
Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''
Wesley13 Wesley13
3年前
MongoDB 数据库的概念以增删改查
1,MongoDB概念解析:Mongo数据库基本概念是文档,集合,数据库,下表给予介绍SQL术语概念MongoDB术语概念解释/说明databasedatabase数据库tablecollestion数据库/集合rowdocument数据记录行/文档columnfield数据字段/域inde
Wesley13 Wesley13
3年前
MongoDB基础
MongoDB与关系型数据库的对比:!(https://oscimg.oschina.net/oscnet/545b6624046cd348c3b292bc4b161d0a272.png) 1.创建数据库: 2.创建集合3.集合的增、删、改、查1)在集合(表名)中插入一个文档(一行数据):db.集合名称.insert({name
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Stella981 Stella981
3年前
MongoDb语法
查看当前都有哪些数据库showdbs;查看都有哪些集合showcollections 使用insert方法插入文档,以{}包注,文档是以键值对出现的,必须成对设置db.user.insert({"uid":1,"name":"luotianshuai","age":18,"salary":1})2、查询
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这