0
我是Mongo聚合的新手。我想计算两个值之间的差异(每天的最后一次收集 - 每天的第一次收集)。数据库记录数据每5mn为许多资源名称。文档的结构是:计算同一文档上的两个值之间的差异
{
_id : ObjectId("5820511a95d447ed648b45d6"),
DeviceName : "OLT01FTV",
ResourceName : "CM MAC:00-07-11-11-39-20",
CollectionTime : ISODate("2016-11-07T09:30:00.000+01:00"),
GranularityPeriod : 5,
A : 0,
B: 17,
C: 4,
D: 21,
E: 3,
F: 0
}
A,B ... F是不同的计数器。 下面的那个插图,我想有:
([
{ "$match": {
"CollectionTime": {
$gte: ISODate("2016-09-05T00:00:00.000Z"),
$lt: ISODate("2016-10-07T00:00:00.000Z")
}
}},
{ "$unwind": "$u2000" },
{ "$group": {
"_id": null,
"firstUC": { "$first": "$UC" },
"lastUC": { "$last": "$UC" },
"firstSM-MISS": { "$first": "$SM-MISS" },
"lastSM-MISS": { "$last": "$SM-MISS" }
}},
{ "$project": {
"diff": {
"$divide": [
{ "$subtract": [ "$firstUC", "$lastUC" ] },
{ "$subtract": [ "$firstSM-MISS", "$lastSM-MISS" ] }
]
}
}}
])
它不工作,我得到以下结果:{ \t“_id “:null, \t“diffA”:null } – lalarita
谢谢@dyouberg但我总是有空值.. – lalarita
请参阅编辑。它工作得很好。我认为你需要改变日期以符合你的需求。 – dyouberg