MongoDb获取时间戳

时间:2017-04-30 08:20:14

标签: mongodb aggregation-framework

我是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完成。

0 个答案:

没有答案