如何查看Mongoid的原始mongoDB查询

时间:2013-07-31 01:40:00

标签: ruby-on-rails mongoid mongodb-query

我按照此页面查看了mongoDB查询。结果我可以看到轻便摩托车的日志 但是我看不到原始的mongoDB查询 How can I display MongoDB queries in the rails console/server

我确实喜欢以下内容。

# in [rails root]/config/environments/development.rb    
Mongoid.logger.level = Logger::DEBUG
Moped.logger.level = Logger::DEBUG
Mongoid.logger = Logger.new("#{Rails.root}/log/mongoid_development.log")
Moped.logger = Logger.new("#{Rails.root}/log/moped_development.log")

# in [rails root]/log/mongoid_development.log
# show nothing.

# in [rails root]/log/moped_development.log
MOPED: [ip address]:27017 QUERY        database=[database name] collection=[collection name] selector={"$query"=>{"screen_name"=>"ts_3156"}, "$orderby"=>{:_id=>1}} flags=[:slave_ok] limit=-1 skip=0 batch_size=nil fields=nil (54.6286ms)

如何使用Mongoid查看原始的mongoDB查询? 我希望看到如下所示。

db.[collection name].find({ $query: {"screen_name"=>"ts_3156"}, $orderby: {:_id=>1} })

我可以在/var/log/mongo/mongo.log中看到原始的mongoDB查询 但我希望在ORM(Mongoid)的日志中看到原始查询。

3 个答案:

答案 0 :(得分:4)

我想我得到了答案。这是关于dsims回答以及我在关于日志记录的文档中看到的内容。

我有一个初始化文件(config / initializers / mongoid.rb),我在那里:

Mongoid.logger = Logger.new($stdout)
Mongo::Logger.logger = Logger.new($stdout)

它将mongo信息转储到控制台。您可能希望在生产环境中更改此设置。但在开发过程中,我希望能够看到数据库正在做什么。特别是因为我对MongoDb来说是全新的。

答案 1 :(得分:1)

我担心mongodb驱动程序mongoid使用的轻便摩托车,报告它的日志

https://github.com/mongoid/moped/blob/a995d859d85144b47523829f54384bd8d8a870dc/lib/moped/protocol/query.rb#L172

要查看原始查询,您需要修改此内容,因为您现在只需拖尾mongodb日志。

答案 2 :(得分:0)

要使用Mongoid运行查询命令,请从项目目录运行mongo以编写查询。如果存在用户表,则为show collectionsdb.users.find等示例。