加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 19:48:54 所属栏目:百科 来源:网络整理
导读:有什么办法可以直接在 Ruby中触发原始的mongo查询,而不是将它们转换为本地的Ruby对象? 我经历了Ruby Mongo教程,但是我无法找到这样的方法. 如果是mysql,我会发出一个这样的查询. ActiveRecord::Base.connection.execute("Select * from foo") 我的mongo查询
有什么办法可以直接在 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方法可以做你想要的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读