所谓覅破解 发表于 2018-10-25 08:01:03

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

  接着上篇博文,继续学习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,获取插入条数,执行结果如下:

  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查询插入条数,执行结果如下:

  2. 集合查询
  使用find语句开启查询,若不添加任何的查询过滤条件,将返回集合中的所有文档
  2.1 不适用任何查询过滤条件
collection.find.each do |document|  2.2 使用查询过滤条件
  puts collection.find({name:'Sally'}).first,查询出满足条件的第一条记录,执行结果如下:

  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  执行结果如下:

  若不使用$set,则将满足条件的文档全部替换为要更新的数据。
  更新多行update_many
  result = collection.update_many( {}, { '$set' => { 'age' => 36 } } )
  puts result.modified_count

  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 } },
  ])

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

页: [1]
查看完整版本: Ruby2.3.3操作MongoDB入门(Mongo驱动版本2.4.3)-数据库CRUD(创建、查询、更新、删除)