40

我按照这个页面查看了 mongoDB 查询。结果,我可以看到轻便摩托车的日志。
但我看不到原始 mongoDB 查询。
如何在 Rails 控制台/服务器中显示 MongoDB 查询

我确实喜欢下面的。

# 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) 的日志中查看原始查询。

4

3 回答 3

8

我想我得到了答案。这是遵循 dsims 的答案,也来自我在有关日志记录的文档中看到的内容。

我有一个初始化文件(config/initializers/mongoid.rb),其中有:

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

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

于 2017-07-05T18:55:52.693 回答
1

恐怕这就是mongodb驱动程序mongoid使用的轻便摩托车,报告它的日志

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

要查看原始查询,您需要像现在一样修改它,只需跟踪 mongodb 日志。

于 2013-09-25T11:20:53.563 回答
0

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

于 2016-06-29T14:41:32.873 回答