如何直接在Ruby中引发原始的MongoDB查询

前端之家收集整理的这篇文章主要介绍了如何直接在Ruby中引发原始的MongoDB查询前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有什么办法可以直接在 Ruby中触发原始的mongo查询,而不是将它们转换为本地的Ruby对象?

我经历了Ruby Mongo教程,但是我无法找到这样的方法.

如果是MysqL,我会发出一个这样的查询.

ActiveRecord::Base.connection.execute("Select * from foo")

我的mongo查询有点大,它在MongoDB控制台中正常执行.我想要的是直接执行相同的Ruby代码.

解决方法

这是一个(可能)更好的迷你教程,如何直接进入MongoDB的勇气.这可能无法解决您的具体问题,但它应该让您远远超过MongoDB版本的SELECT * FROM表.

首先,您将需要一个Mongo::Connection对象.如果
您正在使用MongoMapper,那么您可以调用连接
任何MongoMapper模型上的类方法获取连接
或直接询问MongoMapper:

connection = YourMongoModel.connection
connection = MongoMapper.connection

否则我想你会使用from_uri构造函数来构建
你自己的连接.

那么你需要把你的手放在一个数据库上,你可以这样做
使用array access notation,db方法,或得到
目前一直从MongoMapper:

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做任何有趣的事情
您可以使用数组访问符号或
collection方法

collection = db['collection_name']
collection = db.collection('collection_name')

现在你有一些类似于sql表的行为
您可以使用find count有多少内容查询

cursor = collection.find(:key => 'value')
cursor = collection.find({:key => 'value'},:fields => ['just','these','fields'])
# etc.

现在你有什么你真正的以后:一个热的烤箱Mongo::Cursor
指向您感兴趣的数据.Mongo :: Cursor是
一个Enumerable,所以你可以访问所有你通常的迭代
朋友如each,first,map和我个人之一
收藏,each_with_object

a = cursor.each_with_object([]) { |x,a| a.push(mangle(x)) }

Mongo :: DB中还有commandeval方法可以做你想要的.

猜你在找的Ruby相关文章