【问题标题】:How can I verify every query log from express.js server to mongo db?如何验证从 express.js 服务器到 mongo db 的每个查询日志?
【发布时间】:2014-09-22 16:07:43
【问题描述】:

如何验证从 express.js 服务器到 mongo db 的每个查询?

我看了manage-the-database-profiler 我将配置文件级别设置为db.setProfilingLevel(2,200)。在我的页面上使用 mongoose 调用以下 mongo DB,如下所示

mycollection.findOne({MyId: 1}, function(err, data){

    })

当我查看日志文件时,无法访问“mycollection”。 此外,日志文件有时确实包含对我的某些页面的查询,如下所示。

2014-07-30T13:11:59.258-0700 [conn33] query myDB.myOtherCollection query: { MyID: 100 } planSummary: COLLSCAN ntoskip:0 nscanned:850 nscannedObjects:850 keyUpdates:0 numYields:7 locks(micros) r:6101 nreturned:0 reslen:20 3ms


那么有什么方法可以将所有查询日志显示到 mongo 数据库?

【问题讨论】:

    标签: node.js mongodb express


    【解决方案1】:

    由于您使用的是猫鼬,您可以通过启用调试来查看执行的查询。

    mongoose.set('debug', true)
    

    【讨论】:

    • 这太棒了!我不知道这个。我能够解决我的部分问题,我知道有多少查询可以通过 mongoose 访问 mongodb。但是,我希望他们可以添加查询的时间长度。
    【解决方案2】:

    db.setProfilingLevel 有一个可选的level 参数,当设置为2 时,将所有操作记录在数据库的system.profile 集合中, 在日志文件中。 slowMS 参数确定查询在记录到日志文件之前的速度。

    如果您想密切监视集合中的活动,请考虑使用 MMS 进行监视,因为它以比 system.profile 更友好的格式公开了许多有用的使用、性能和分析信息。

    【讨论】:

      【解决方案3】:

      如果您将第二个参数 slowMS 设置为 1 毫秒,这将记录所有耗时超过 1 毫秒的查询——这几乎是所有查询。

      【讨论】:

      • 谢谢,你是对的。 1ms 可以记录很多东西。但是,我认为如果查询小于 1ms,则不会显示查询日志。
      猜你喜欢
      • 1970-01-01
      • 2016-09-03
      • 1970-01-01
      • 2019-01-20
      • 2019-07-10
      • 2014-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多