Ruby2.3.3操作MongoDB入门(Mongo驱动版本2.4.3)-数据库CRUD(创建、查询、更新、删除)
admin
2023-02-15 09:40:12
0

接着上篇博文,继续学习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)-数据库CRUD(创建、查询、更新、删除)

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)-数据库CRUD(创建、查询、更新、删除)


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)-数据库CRUD(创建、查询、更新、删除)


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)-数据库CRUD(创建、查询、更新、删除)

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

更新多行update_many

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

puts result.modified_count

Ruby2.3.3操作MongoDB入门(Mongo驱动版本2.4.3)-数据库CRUD(创建、查询、更新、删除)


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)-数据库CRUD(创建、查询、更新、删除)

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

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




相关内容

热门资讯

电风扇通电不转,但是有电 原因可能是因为电风扇缺油了,可以通过给风扇注油试试,具体的注油方式是能将电机拆下来,然后再对主轴和前...
美的波轮洗衣机通电不转怎么回事 可能是洗衣机顶盖的安全开关损坏,安全开关与可以控制洗衣机的程序,所以需要更换安全开关;可能是异物卡住...
冰箱通电不启动是怎么回事? 可能是电路故障。电源线开路,电源线插头与插座接触不良,启动继电器、过载保护器接线端子脱落或接触不良,...
为什么我家里的燃气热水器通电不... 1、可能是水管内没有水流通过,热水器不工作。2、可能是电池电量低,无法推动点火器。3、可能是水压低造...
冰箱通电后压缩机不启动,但压缩... 1、非常有可能是因为冰箱的压缩机内高压输出缓冲管出现了断裂,造成高压管不排气低压管不吸气的这种状况,...
身高缩了,房子小了,胆子也怯了... 据日经中文网7月24日报道,日本经济长期停滞催生了“不断缩小”的社会倾向,近年来日本人的平均身高持续...
广东省内铁路即将全线停运 作者 | 第一财经 南英今年第12号台风“红霞”已于7月24日凌晨生成,预计25日夜间至26日早晨在...
中美频繁高层互动,菲律宾好自为... 7月24日,菲律宾组织7艘公务船、3艘海警舰、1艘运鱼船,并唆使大量渔船位中国黄岩岛管辖海域非法聚集...
被要求补税2250万欧元的法国... ·贝尔纳·阿尔诺。(LVMH官网)他的“帝国”离不开这个国家的形象加持,而这个国家,也早已吃定了这一...
通派龙湖御潮云上:当极核地段遇... 在2026年的郑州楼市版图中,如果要寻找一个能够同时承载“主城确定性”与“产品革新力”的坐标,通派龙...