gpt4 book ai didi

ruby - 如何在 Ruby 中直接触发原始 MongoDB 查询

转载 作者:IT老高 更新时间:2023-10-28 13:09:50 29 4
gpt4 key购买 nike

有什么方法可以直接在 Ruby 中触发原始 mongo 查询,而不是将它们转换为原生 Ruby 对象?

我浏览了 Ruby Mongo 教程,但在任何地方都找不到这样的方法。

如果是 mysql,我会触发类似这样的查询。

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

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

最佳答案

这里有一个(可能)更好的关于如何直接进入 MongoDB 内部的迷你教程。这可能无法解决您的具体问题,但它应该可以让您了解 SELECT * FROM table 的 MongoDB 版本。


首先,您需要一个 Mongo::Connection目的。如果您正在使用 MongoMapper然后你可以调用 connection任何 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.

现在你有一个漂亮 Shiny 的Mongo::DB实例在你的手中。但是,您可能想要 Collection做任何有趣的事您可以使用数组访问表示法或 collection方法:

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

现在你有了一些行为类似于 SQL 表的东西,所以你可以count它有多少东西或使用 find 查询它:

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

现在你得到了你真正想要的东西:从 toastr 里出来的热腾腾的 Mongo::Cursor指向您感兴趣的数据。 Mongo::Cursor 是一个 Enumerable因此您可以访问所有常用的迭代 friend 如each , first , map ,以及我的个人之一收藏夹, each_with_object :

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

还有commandeval Mongo::DB 上可能做你想做的事情的方法。

关于ruby - 如何在 Ruby 中直接触发原始 MongoDB 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6548061/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com