Docs 菜单
Docs 主页
/ / /
Ruby MongoDB 驱动程序
/

Ruby 驱动程序快速入门

在此页面上

  • 先决条件
  • 建立连接
  • 访问数据库和集合
  • 插入文档
  • 查询集合
  • Update Documents
  • Delete Documents
  • createIndexes
  • 完整示例应用
  • 使用默认端口 27017 在本地主机上运行的 MongoDB 实例。

  • Ruby MongoDB驾驶员。 有关如何安装MongoDB驾驶员的说明,请参阅安装

  • 代码最上方有以下语句:

require 'mongo'

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

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

您也可以使用 URI 连接字符串:

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

提示

另请参阅:

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

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
db.list_collections # returns a list of collection metadata hashes

若要访问集合,请通过名称引用该集合。

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' ],
siblings: {
brothers: 0,
sisters: 1
}
}
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' ],
siblings: { brothers: 0, sisters: 1 } },
{ _id: 2, name: 'Sally',
hobbies: ['skiing', 'stamp collecting' ],
siblings: { brothers: 1, sisters: 0 } } ]
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"], "siblings" => { "brothers": 1, "sisters": 0 } }

通过指定要匹配的键和值来查询嵌套文档。

client = Mongo::Client.new('mongodb://127.0.0.1:27017/test')
collection = client[:people]
puts collection.find("siblings.sisters": 1 ).first

该示例应打印以下内容:

{"_id"=>1, "name"=>"Steve", "hobbies"=>["hiking", "tennis", "fly fishing"], "siblings"=>{"brothers"=>0, "sisters"=>1}}

提示

另请参阅:

有多种更新方法,包括 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

该示例应打印以下内容:

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

以下示例使用带有空白查询过滤器的 update_many 来更新集合中的所有文档。

client = Mongo::Client.new('mongodb://127.0.0.1:27017/test')
collection = client[:people]
result = collection.update_many( {}, { '$set' => { 'age' => 36 } } )
puts result.modified_count # returns 2 because 2 documents were updated

提示

另请参阅:

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

提示

另请参阅:

将Ruby 驾驶员用于几种常见用例的示例应用程序可以从Github 下载 。

后退

Tutorials