我有一个mongodb
聚合查询,它为我带来了这样的结果。
[
{
_id:ObjectId(5d9b70bb1fbe2d416429aae6),
deviceID:"18524122775d9b709f1fbe2d416429aadb",
visitorEmail:"Unregistered",
visitorName:"Guest80706",
nsp:"/globalintltd.com",
agentEmail:"bilawal1512@globalintltd.com",
createdOn:"2019-10-07T17:07:07.615Z",
messages:[
{
_id:ObjectId(5d9b968c1fbe2d416429b360)
from:"BILAWAL"
to:"5d9b709f1fbe2d416429aadb"
body:"hello"
cid:5d9b70bb1fbe2d416429aae6
date:"2019-10-07T19:48:28.126Z"
type:"Agents"
attachment:false
filename:null
},
{
_id:ObjectId(5d9b968c1fbe2d416429b360)
from:"BILAWAL"
to:"5d9b709f1fbe2d416429aadb"
body:"how may i help you?"
cid:5d9b70bb1fbe2d416429aae6
date:"2019-10-07T19:49:28.126Z"
type:"Agents"
attachment:false
filename:null
},
{
_id:ObjectId(5d9b968c1fbe2d416429b360)
from:"BILAWAL"
to:"5d9b709f1fbe2d416429aadb"
body:"There?"
cid:5d9b70bb1fbe2d416429aae6
date:"2019-10-07T19:55:28.126Z"
type:"Agents"
attachment:false
filename:null
}
]
},
]
通过此聚合查询,我获得了以上结果
[{$match: {
nsp: '/globalintltd.com',
agentEmail: 'bilawal1512@globalintltd.com'
}}, {$lookup: {
from: 'messages',
'let': {
cid: '$_id'
},
pipeline: [
{
$match: {
$expr: {
$eq: [
'$cid',
'$$cid'
]
},
type: 'Agents'
}
}
],
as: 'messages'
}}]
我的系统中有2个实体。代理和访客。两者都可以互相聊天。
我在每个对话消息数组中都获得了对话对象。我想要的是计算messages
数组中每2个messages
的(日期时间)差异,最后我要计算messages
的所有差异的平均值。
基本上从每次对话中,我得到的对话都是agent
的所有消息,以计算聊天的平均响应时间(即代理通常对访问者的消息响应多少时间后的平均响应时间)。那么我如何为我以对话消息数组形式接收的每个对话计算该数字呢?