Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在ruby mongoid应用程序中测量moped insert运行时?_Ruby_Mongodb_Mongoid_Moped - Fatal编程技术网

如何在ruby mongoid应用程序中测量moped insert运行时?

如何在ruby mongoid应用程序中测量moped insert运行时?,ruby,mongodb,mongoid,moped,Ruby,Mongodb,Mongoid,Moped,我目前正在编写一个moped日志解析器,以便监视moped查询的运行时。 对于使用运行时参数的查询命令来说,这非常有用,但是INSERT和UPDATE没有运行时参数。所有INSERT和UPDATE之后都会有一个getLastError命令,该命令包含一个运行时 以下是一些轻便摩托车原木样本: 运行时查询 MOPED: 127.0.0.1:27017 QUERY database=X collection=X selector=X flags=[] limit=-1 skip=0 b

我目前正在编写一个moped日志解析器,以便监视moped查询的运行时。 对于使用运行时参数的查询命令来说,这非常有用,但是INSERT和UPDATE没有运行时参数。所有INSERT和UPDATE之后都会有一个getLastError命令,该命令包含一个运行时

以下是一些轻便摩托车原木样本:

运行时查询

MOPED: 127.0.0.1:27017 QUERY        database=X collection=X selector=X
flags=[] limit=-1 skip=0 batch_size=nil fields=nil runtime: 0.6950ms
不带运行时但带命令的插入

MOPED: 127.0.0.1:27017 INSERT       database=X collection=X documents=X flags=[]
                       COMMAND      database=X command={:getlasterror=>1, :w=>1}
runtime: 0.4750ms
我非常确定命令运行时是用于getlasterror调用的,而不是用于我的INSERT调用。
那么,有没有一种方法可以为INSERT查询获取此运行时信息?

我不使用日志解析器,而是使用类似的方法,效果非常好:

ActiveSupport::Notifications.subscribe('query.moped') do |name, start, finish, id, payload|
    runtime = (finish - start)*1000
    moped_ops = payload[:ops]
    moped_ops.each do |op|
      unless op.collection == '$cmd'
        query = op.class.name.split('::').last.downcase
        query = op.selector.first[0].to_s.gsub(/\$/, '') if query == 'command'
        DO SOMETHING WITH #{op.database}.#{op.collection}.#{query}
      end
    end

  end