我是MongoDb的新手,因为我昨天才安装它...
我收集了n个房间的温度读数:
[
{
"key": "livingRoom",
"name": "Living Room",
"temp": 19.437,
"ts": "2017-04-29T07:20:22.000Z"
},
{
"key": "bedroom",
"name": "Bedroom",
"temp": 24.875,
"ts": "2017-04-29T07:21:14.000Z"
}
]
我希望得到每个房间过去24小时的当前(最后)温度和最小/最大值。我还想要最小值和最大值的时间戳。 我90%的方式在那里,但一如既往,最后10%似乎需要90%的时间。 我有这个聚合:
{
"$group": {
"_id": "$key",
"temp": {"$last": "$temp"},
"name": {"$last": "$name"},
"ts": {"$last": "$ts"},
"maxTemp": {"$max": "$temp"},
"minTemp": {"$min": "$temp"}
}
}
产生这个结果:
[
{
"_id": "bedroom",
"temp": 22.25,
"name": "Bedroom",
"ts": "2017-04-30T07:31:30.000Z",
"maxTemp": 24.875,
"minTemp": 21.437
},
{
"_id": "livingRoom",
"temp": 18.75,
"name": "Living Room",
"ts": "2017-04-30T07:39:38.000Z",
"maxTemp": 19.625,
"minTemp": 17.625
}
]
但当然不包括最小值和最大值的时间戳。
这个问题: Multiple group operations using Mongo aggregation framework很有用,似乎表明我不能做我想做的事。 我计划使用不同类别的不同组来获取我想要的不同聚合,但是当一个组对最后一组的结果起作用时,似乎我想要做的事情不能由mongo完成。