Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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 on rails mongodb计算对象字段的两个属性之间的差异_Ruby On Rails_Mongodb_Mongoid - Fatal编程技术网

Ruby on rails mongodb计算对象字段的两个属性之间的差异

Ruby on rails mongodb计算对象字段的两个属性之间的差异,ruby-on-rails,mongodb,mongoid,Ruby On Rails,Mongodb,Mongoid,我有一个mongodb集合,比如说customer,我将状态更改保存在status\u changes中,作为对象,该对象的键具有status和value以及status change date,如下所示: Name | Status changes | -------------------------------------- Anil | { "lead" : ISODate("2018-01-22T06:07:30.707Z"), "verificat

我有一个mongodb集合,比如说
customer
,我将状态更改保存在
status\u changes
中,作为对象,该对象的键具有status和value以及status change date,如下所示:

Name    |        Status changes      |
--------------------------------------
Anil    | { "lead" : ISODate("2018-01-22T06:07:30.707Z"), "verification" : ISODate("2018-01-22T06:08:45.919Z"), "active" : ISODate("2018-01-22T06:11:24.468Z")}
---------------------------------------
Sudhir  | { "lead" : ISODate("2017-08-20T06:07:30.707Z"), "verification" : ISODate("2017-08-22T06:08:45.919Z")}
考虑到总共可能有3种状态(
lead
verification
active
),并且状态更改只能朝一个方向进行,即
lead
->
verification
->
active
),我如何获得以下格式的所有客户状态更改之间的平均时间


请注意,我的问题与不同,因为日期是同一对象字段的一部分。

你能试试这个吗,这将返回以米尔斯为单位的转换时间,我们可以将其转换为分钟或小时

db.col.aggregate(
    [
        {$project : {
            leadToVerification : { $subtract : ["$status.verification" , "$status.lead"] },
            verificationToActive : { $subtract : ["$status.active" , "$status.verification"] }
            }
        },
        {$group : {_id : null, leadToVerification : {$avg : "$leadToVerification"}, verificationToActive : {$avg : "$verificationToActive"}}}
    ]
)
输出

{ "_id" : null, "leadToVerification" : 86475212, "verificationToActive" : 158549 }

工作起来很有魅力!谢谢@Saravana可能是我在发帖前看过上述问题的副本。在我的例子中,数据结构是不同的。