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。
分享到:
相关推荐
3. **连接和配置**:讲解如何使用Ruby的MongoDB驱动程序建立与MongoDB服务器的连接,设置数据库和集合,并处理连接错误。 4. **查询与聚合**:MongoDB支持丰富的查询语法,包括查询筛选、排序、分页等。书中会介绍...
对于`mongoid`,在Rails应用中,我们需要配置`config/mongoid.yml`文件来连接到MongoDB数据库。配置文件通常如下所示: ```yaml development: clients: default: database: your_database_name hosts: - ...
总的来说,`mongo-ruby-driver`是Ruby开发者连接MongoDB数据库的重要工具,它简化了数据操作,提高了开发效率,并且与MongoDB的最新特性保持同步,是构建基于MongoDB的Ruby应用的基石。通过深入理解和熟练运用这个...
3. **建立连接**:使用Ruby驱动程序连接MongoDB数据库。 4. **CRUD操作**:通过Ruby代码执行创建、读取、更新和删除操作。 #### 四、Ruby中的MongoDB操作示例 下面是一些基本的Ruby与MongoDB交互的例子: 1. **...
总的来说,`mongo-ruby-driver`是Ruby开发者连接和操作MongoDB数据库的重要工具。通过阅读和理解其源代码,不仅可以提升对MongoDB工作原理的理解,还可以实现更为灵活和高效的数据库操作。同时,提供的文档资源是...
现在,MongoDB已经安装并运行在你的系统上,你可以开始使用Ruby的Mongo驱动来连接和操作数据库。Ruby社区维护了一个名为`mongo`的gem,用于与MongoDB交互。使用以下命令安装: ```bash gem install mongo ``` 在Ruby...
前边有介绍mongodb的安装以及ror项目的搭建,现在进行一下整合。 1.创建项目 创建项目时不再使用rails active_record支持 rails new todo -O 2.我们将要使用MongoMapper来驱动MongoDB到Rails 编辑GemFile,增加...
在`mongodb.rb`中,Ruby代码会配置Logstash的input插件来连接MongoDB服务器,指定数据库和集合,并定义查询来获取所需的数据。可能的配置项包括数据库地址、端口、认证信息以及特定的查询语句。 接下来是`jdbc.rb`...
本例是本人参考网上资料自行编写的,希望对感兴趣的朋友有所帮助(里面有mongodb的启动说明与shell命令操作说明)! MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可护展的高性能数据...
- **PythonLanguageCenter**:Python 开发者可以在这里找到关于如何使用 PyMongo 连接 MongoDB 的详细指南。 - **PHPLanguageCenter**:PHP 开发者可以学习如何使用官方 PHP 驱动程序进行 MongoDB 操作。 - **...
MongoDB提供多语言驱动支持,包括Ruby/Ruby-on-Rails、Java、C#、JavaScript、C/C++、Erlang、Python、Perl等。 5. MongoDB的优势: MongoDB不需要额外的缓存,支持丰富的查询和数据类型,同时商业公司10gen提供...
1. **连接到MongoDB实例**:Genghis允许你输入MongoDB服务器的地址和端口,以便连接到本地或远程数据库服务器。 2. **浏览数据库**:列出所有数据库,并查看每个数据库中的集合(相当于SQL中的表)。 3. **查看和...
来自正在运行的科幻 MUSH 的完整源代码,包括使用 Ruby 编码的广泛的 MongoDB 支持的系统。 问题/需要帮助? 在 wcmush.com 2199 上连接到支持 MUSH 介绍 此页面为的公共资源编制索引,这是一款以 Wing Commander ...
版本0.4.1针对MongoDB提供了稳定且高效的连接能力,确保了数据的可靠传输。该插件的离线安装包包括了所有必要的依赖,使得在没有网络的环境中也能便捷地部署和使用。 首先,让我们了解一下如何安装这个插件。在...
18. **故障排查**:收集了常见问题及其解决方案,如连接问题、性能瓶颈等,帮助快速定位并解决问题。 19. **软件获取**:提供了MongoDB软件的下载链接,包括官方版本与第三方包管理器(如Ubuntu、Debian、CentOS、...
对于Ruby开发者,这部分内容提供了如何在Ruby中操作MongoDB对象和类的详细指导,包括连接数据库、执行查询和更新数据的方法。 ### **21. MongoDB语言支持(MongoDB Language Support)** 这部分内容介绍了MongoDB...