首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoMapper运行简单的MongoDB查询

MongoMapper运行简单的MongoDB查询
EN

Stack Overflow用户
提问于 2011-11-03 22:13:06
回答 1查看 1K关注 0票数 0

我正在运行一个Rails应用程序,并使用MongoDB作为数据库存储。对于数据映射部分,我使用MongoMapper gem。

如果我想模仿ActiveRecord模型的功能,MongoMapper是很棒的,但我的问题是,是否可以通过MongoMapper运行简单的MongoDB查询,比如直接查询集合(即没有显式的模型,谁包括字段等),或者我应该使用ruby的mongo gem吗?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2012-08-15 02:20:05

我主要是从How to fire raw MongoDB queries directly in Ruby那里偷的

代码语言:javascript
复制
connection = MongoMapper.connection

否则,我猜您将使用from_uri构造函数来构建自己的连接。

然后,您需要获得一个数据库,您可以使用数组访问表示法、db方法或直接从MongoMapper获取当前的数据库:

代码语言:javascript
复制
db = connection['database_name']    # This does not support options.
db = connection.db('database_name') # This does support options.
db = MongoMapper.database           # This should be configured like
                                # the rest of your app.

现在,您手中就有了一个闪亮的Mongo::DB实例。但是,您可能希望Collection做一些有趣的事情,您可以使用数组访问表示法或集合方法来实现:

代码语言:javascript
复制
collection = db['collection_name']
collection = db.collection('collection_name')

现在,您有了一个类似于SQL表的东西,所以您可以计算它有多少东西,或者使用find查询它:

代码语言:javascript
复制
cursor = collection.find(:key => 'value')
cursor = collection.find({:key => 'value'}, :fields => ['just', 'these', 'fields'])

等。

输出一行

代码语言:javascript
复制
cursor.each { |row| puts row } 

现在您有了真正想要的东西:一个指向您感兴趣的数据的热出炉Mongo::游标。Cursor是一个可枚举型,因此您可以访问所有常见的迭代朋友,如each、first、map和我个人最喜欢的each_with_object:

代码语言:javascript
复制
a = cursor.each_with_object([]) { |x, a| a.push(mangle(x)) }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7996342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档