mongodb数据库教程-Ruby连接MongoDB操作

跨零代码为大家提供高品质的解决方案,请大家多多来访,跨零不胜感激,在此谢过。

MongoDB Ruby驱动程序是MongoDB官方支持的Ruby驱动程序。它是用纯Ruby编写的,为了简化而进行了优化。它可以自己使用,但它也可以作为几个对象映射库的基础。

1.安装驱动程序

Ruby驱动程序是作为一个gem绑定的,并且托管在Rubygems上。

安装gem

驱动程序可以手动或捆绑式安装。手动安装gem

gem install mongo 

要使用捆绑安装gem,请在Gemfile中包含以下内容:

gem 'mongo', '~> 2.4' 

2.前提条件

  • MongoDB实例在localhost上运行使用默认端口27017
  • Ruby MongoDB驱动程序。有关如何安装MongoDB驱动程序的说明,请参阅安装。
  • 代码顶部的以下语句:
require 'mongo' 

3.Ruby连接MongoDB

使用Mongo::Client建立与正在运行的MongoDB实例的连接。

require 'mongo' client = Mongo::Client.new([ '127.0.0.1:27017' ], :database => 'test') 

还可以使用URI连接字符串:

require 'mongo' client = Mongo::Client.new('mongodb://127.0.0.1:27017/test') 

4.访问数据库和集合

以下示例演示如何访问指定数据库并显示其集合:

client = Mongo::Client.new([ '127.0.0.1:27017' ], :database => 'test') db = client.database  db.collections # returns a list of collection objects db.collection_names # returns a list of collection names 

要访问一个集合,请按名称查看。

collection = client[:restaurants] 

如果集合不存在,服务器将在第一次放入数据时创建。

插入文档

要将单个文档插入到集合中,请使用insert_one方法。

client = Mongo::Client.new('mongodb://127.0.0.1:27017/test')  collection = client[:people]  doc = { name: 'Steve', hobbies: [ 'hiking', 'tennis', 'fly fishing' ] }  result = collection.insert_one(doc) result.n # returns 1, because one document was inserted 

要将多个文档插入到集合中,请使用insert_many方法。

docs = [ { _id: 1, name: 'Steve', hobbies: [ 'hiking', 'tennis', 'fly fishing' ] },          { _id: 2, name: 'Sally', hobbies: ['skiing', 'stamp collecting' ] } ]  result = collection.insert_many(docs) result.inserted_count # returns 2 because two documents were inserted 

查询集合

使用find方法查询集合。一个空的查询过滤器返回集合中的所有文档。

client = Mongo::Client.new('mongodb://127.0.0.1:27017/test') collection = client[:people]  collection.find.each do |document|   #=> Yields a BSON::Document. end 

使用查询过滤器只找到匹配的文档。

client = Mongo::Client.new('mongodb://127.0.0.1:27017/test') collection = client[:people]  puts collection.find( { name: 'Sally' } ).first 

该示例应该会打印以下内容:

{"_id" => 2, "name" => "Sally", "hobbies" => ["skiing", "stamp collecting"]} 

更新文件

有几种更新方法,包括:update_oneupdate_manyupdate_one更新单个文档,而update_many会一次更新多个文档。

这两种方法都将查询过滤器作为第一个参数,以及更新文档的数据作为第二个参数。 使用$set来添加或更新特定的字段。如果没有$set,则会将所有文档更新为给定的更新数据。

client = Mongo::Client.new('mongodb://127.0.0.1:27017/test') collection = client[:people]  result = collection.update_one( { 'name' => 'Sally' }, { '$set' => { 'phone_number' => "555-555-5555" } } )  puts collection.find( { 'name' => 'Sally' } ).first 

删除文档

使用delete_onedelete_many方法从集合中删除文档(单个或多个)。

client = Mongo::Client.new('mongodb://127.0.0.1:27017/test') collection = client[:people]  result = collection.delete_one( { name: 'Steve' } )  puts result.deleted_count # returns 1 because one document was deleted 

以下示例将两个记录插入到集合中,然后使用与正则表达式匹配name字段查询,删除那些以“S”开头的字符串的所有文档。

client = Mongo::Client.new('mongodb://127.0.0.1:27017/test') collection = client[:people]  collection.insert_many([ { _id: 3, name: "Arnold" }, { _id: 4, name: "Susan" } ])  puts collection.count # counts all documents in collection  result = collection.delete_many({ name: /$S*/ })  puts result.deleted_count # returns the number of documents deleted 

创建索引

使用create_onecreate_many方法一次创建一个索引或多个索引。

client = Mongo::Client.new('mongodb://127.0.0.1:27017/test') collection = client[:people]  collection.indexes.create_one({ name: 1 }, unique: true) 

使用create_many方法使用一个语句创建多个索引。 请注意,使用create_many时,语法与create_one不同。

client = Mongo::Client.new('mongodb://127.0.0.1:27017/test') collection = client[:people]  collection.indexes.create_many([     { key: { name: 1 } , unique: true },     { key:  { hobbies: 1 } },   ]) 

  

从零到一,创造未来!跨零综合IT问题解决服务站,欢迎你的到来。Oracle数据库教程 mongodb数据库教程/a> 只为你绽放。

本文固定链接: http://kua0.com/2019/04/02/mongodb数据库教程-ruby连接mongodb操作/

为您推荐

发表评论

电子邮件地址不会被公开。 必填项已用*标注