`

[转]Ruby连接MongoDB

 
阅读更多

Ruby连接MongoDB

想要在Ruby中连接MongoDB,需要使用mongo模块,该模块可以通过ruby自带的gems程序进行安装。

$ gem update --system
$ gem install mongo
$ gem install bson_ext

Mongo模块提供了Mongo::Connnection类连接MongoDB,如果不指定具体的数据库,默认情况下会创建一个持有MongoDB连接的实例,

require 'mongo'
conn = Mongo::Connection.new
puts conn.class            # Mongo::Connection
puts conn.database_names   # ["admin", "local", ...]

如果需要指定默认的数据库,可以在创建实例的时候指定。如果指定的数据库不存在,MongoDB会创建该数据库。

db = Mongo::Connection.new.db('blog')
db.create_collection('users')  # 创建一个collection
puts db.class                  # Mongo::DB

涉及数据库的操作,基本的创建、删除、拷贝、重命名。重命名操作可以通过拷贝和删除组合完成。

conn.copy_database('blog', 'blog-backup')
conn.drop_database('blog-backup')

在MongoDB中没有了表的概念,取而代之的是collection,可以理解为容器,记录全都存放在collection中。对collection所能做的也是传统的CRUD操作,不过使用起来更加面向对象。Mongo模块的Collection类提供了insert, drop, update, find等方法操作collection。下面大概地了解一下它们的用法。

在先前创建的名为users的collection中插入几条记录。MongoDB中记录的类型为类JSON格式,形式如下。

{ 
  "_id" : ObjectId("4d51eb216b6f45122c000001"), 
  "username" : "clovery", 
  "password" : "clovery" 
}
# ruby中无法识别json格式,所以插入记录时使用ruby的hash格式,mongo模块会自动转换成json形式
# 向users中插入三条记录
db['users'].insert({"username" => "andy", "password" => "12345"})
db['users'].insert({"username" => "alien", "password" => "12345"})
db['users'].insert({"username" => "angel", "password" => "12345"})

db['users'].count  # 3

可以通过find_one和find检索记录。find_one返回一个BSON::OrderedHash数据,类似于ruby的hash类型。find返回Mongo::Cursor引用,可以 对其进行迭代检索所有符合条件的数据。

db['users'].find_one   
# {"_id"=>BSON::ObjectId('4d5246c26b6f451714000004'), "username"=>"andy", "password"=>"12345"}

db['users'].find.each do |row|
  print "#{row['username']} "
end
# andy alien angel

update可以更新原有的记录。

db['users'].update({'username' => 'andy'}, {'$set' => {'password' => 'andy'}})
# {"_id"=>BSON::ObjectId('4d52499d6b6f451714000008'), "password"=>"andy", "username"=>"andy"}

使用remove删除collection中的记录,如果不指定条件,会删除collection中的所有记录。

db['users'].remove({'username' => 'andy'}) 
db['users'].count # 2

删除collection

db.drop_collection('users')

关于Ruby如何连接MongDB,详细信息请参考MongoDB Ruby Driver Tutorial

分享到:
评论

相关推荐

    Ruby on Rails框架程序连接MongoDB的教程

    前边有介绍mongodb的安装以及ror项目的搭建,现在进行一下整合。 1.创建项目 创建项目时不再使用rails active_record支持 rails new todo -O 2.我们将要使用MongoMapper来驱动MongoDB到Rails 编辑GemFile,增加...

    NoSQL云数据库mongoDB的C#示例(vs2005)

    本例是本人参考网上资料自行编写的,希望对感兴趣的朋友有所帮助(里面有mongodb的启动说明与shell命令操作说明)! MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可护展的高性能数据...

    wcnh:WCNH MUSH - PennMUSH + Ruby + MongoDB + 软件代码 + 数据库

    来自正在运行的科幻 MUSH 的完整源代码,包括使用 Ruby 编码的广泛的 MongoDB 支持的系统。 问题/需要帮助? 在 wcmush.com 2199 上连接到支持 MUSH 介绍 此页面为的公共资源编制索引,这是一款以 Wing Commander ...

    connection_pool, 用于 ruby的通用连接池.zip

    connection_pool, 用于 ruby的通用连接池 connection_pool 用于 ruby的...MongoDB有自己的连接池。 ActiveRecord有自己的连接池。 这是一个通用连接池,可以与任何 比如 。Dalli和其他 ruby 网络客户端一起使用。用法

    mongo-hadoop:适用于HadoopMongoDB连接器

    MongoDB Hadoop连接器 目的 用于HadoopMongoDB连接器是一个库,该库允许将MongoDB(或数据格式为BSON的备份文件)用作Hadoop MapReduce任务的输入源或输出目标。 它旨在提供更大的灵活性和性能,并使MongoDB中的数据...

    MongoDB权威指南(中文版)高清

    15111.2.4 评论树 15211.2.5 投票 15311.3 自定义提交表单:Ruby 15411.3.1 安装Ruby驱动 15411.3.2 使用Ruby驱动 15511.3.3 自定义表单提交 15511.3.4 Ruby的对象映射和在Rails中使用MongoDB 15711.4...

    电子书:MongoDB权威指南(中文版)

    第1 章 简介 11.1 丰富的数据模型 11.2 容易...PHP    14911.3 自定义提交表单:Ruby 15411.4 实时分析: Python 157附录A 安装MongoDB 163附录B mongo:MongoDB shell 167附录C 深入MongoDB 内部 169

    connection_pool:Ruby的通用连接池

    MongoDB有自己的连接池。 ActiveRecord有自己的连接池。 这是一个通用连接池,可以与任何组件(例如Redis,Dalli和其他Ruby网络客户端)一起使用。用法创建一个对象池以在Ruby应用程序中的光纤或线程之间共享: $...

    mongery:将MongoDB查询转换为PostgreSQL JSON的Arel AST

    Mongery使用JSON列将MongoDB查询转换为Postgres的Arel AST,用于ActiveRecord连接。 这在以下情况下很有用:在不接触应用程序代码的情况下从MongoDB后端迁移到Postgres的情况,或者将MongoDB查询语法作为JSON API...

    homebrew-brew:官方的MongoDB软件Homebrew Tap

    MongoDB Homebrew Tap 这是用于官方MongoDB软件的自定义水龙头。 设置 您可以使用以下命令在MacOS终端会话中添加自定义拍子: $ brew tap mongodb/brew 安装公式 添加水龙头后,请按照...仅安装最新的以连接到远程M

    完整的Ruby地理编码解决方案。-Ruby开发

    Geocoder完整的Ruby地理编码解决方案。 主要功能:正向和反向地理编码。 IP地址地理编码。 ...数据库:MySQL,PostgreSQL,SQLite和MongoDB。 Rails:4、5和6。在JSON(适用于MRI)或json_pure(fo

    grape_basic_app:葡萄基本运行应用程序

    #Grape基本项目本项目对葡萄应用程序的基本工作结构连接到MongoDB数据库。 ##要求 无业游民(版本1.6.3至1.7.2) 虚拟盒子 ##设置开发环境 运行$ vagrant up创建虚拟机。 我们正在使用SaltStack作为置备工具。 ...

    mongodb-driver-examples:几种语言的MongoDB示例存储库

    MongoDB驱动程序示例该git存储库包括mongodb连接和以下查询示例: C# Java Node.js Node.js(猫鼬) PHP Python(使用pymongo) Ruby Ruby(Mongoid) 在安装适当的驱动程序并插入MongoDB URI之后,这些示例应立即...

    slack-ruby-bot-server:一个库,使您可以在Ruby中编写具有Slack按钮集成的完整Slack bot服务

    Slack Ruby Bot服务器 在Ruby中通过Slack按钮集成构建完整的Slack机器人服务。... 在mongoid.yml配置数据库连接。 在您的Gemfile中添加mongoid宝石。 gem 'mongoid' gem 'kaminari-mongoid' gem 'mo

    vagrant-mongodb

    流浪者-mongodb 该项目的目标是简化用于测试和开发的 MongoDB 实例的创建。... 这将启动一个新实例,安装、配置,然后通过 SSH 连接到其中。 它默认执行以下操作: 从 Amazon 发布的标准 AMI 启动一个新的m1.medi

    geocoder:完整的Ruby地理编码解决方案

    连接到全球40多个API。 诸如缓存之类的性能增强功能。 与ActiveRecord和Mongoid集成。 基本地理空间查询:在半径(或矩形或环形)内搜索。 兼容性: Ruby版本:2.x和JRuby。 数据库:MySQL,PostgreSQL,...

    kman:Koa + MongoDB + Angular.js + Node.js。 编写由 Koa 驱动的 node.js 服务器支持的 AngularJS 应用程序的起点

    使用高级猫鼬使用高级 socket.io(实验性的,不确定如何正确使用) 使用SASS 更多用于开发(观察、实时加载)和部署(编译、构建、连接、丑化、压缩、md5 等)的预定义 grunt 任务要求MongoDB 节点 >= 0.11.9 Ruby和...

    amazon-documentdb-samples

    样品该存储库包含以下方面的端到端示例:用于从Python,PHP,Node.js和Ruby连接到Amazon DocumentDB的示例代码(即将推出)示例代码展示了如何使用AWS DocumentDB更改流将事件流传输到ElasticSearch,用于Kafka的...

    nosql 入门教程

    12.4 HiveQL连接 211 12.4.1 计划解释 213 12.4.2 分区表 215 12.5 小结 215 第13章 综览数据库内部 216 13.1 MongoDB内部 217 13.1.1 MongoDB传输协议 218 13.1.2 插入文档 219 13.1.3 查询集合 219 ...

Global site tag (gtag.js) - Google Analytics