我运行了数千个查询,现在我想记录所有的计时结果。但问题是成千上万的查询有几千个时间毫秒。所以我只想总结那些毫秒的总时间。那我该怎么做呢。
我使用了db.setProfilingLevel(2),然后使用db.system.profile.find({op:“query”})来获取时间。结果是
{ "ts" : ISODate("2014-04-15T13:05:08.434Z"), "op" : "query", "ns" : "practice.students", "query" : { "CID" : 55217 }, "nscanned" : 1000, "nreturned" : 1, "responseLength" : 53, "millis" : 0, "client" : "127.0.0.1", "user" : "" }
{ "ts" : ISODate("2014-04-15T13:05:08.472Z"), "op" : "query", "ns" : "practice.students", "query" : { "CID" : 152120 }, "nscanned" : 1000, "nreturned" : 1, "responseLength" : 54, "millis" : 0, "client" : "127.0.0.1", "user" : "" }
所以我想总结一下millis字段,我应该怎么做,有些人可以建议。
答案 0 :(得分:0)
您可以将aggregate命令用于任何类型的分析,就像在任何其他集合上一样:
db.system.profile.aggregate([
{ "$match": { "op": "query" }},
{ "$group": { "_id": null, "millis": { "$sum": "$millis" } }}
])
使用各种framework operators。甚至更多。