我正在一个Raspberry Pi项目上,该项目收集天气测量值并将其存储在Mongo数据库中,如下所示:
{
"_id": {
"$oid": "577975c874fece5775117209"
},
"timestamp": {
"$date": "2016-07-03T20:30:00.995Z"
},
"temp_f": 68.9,
"temp_c": 20.5,
"humidity": 50,
"pressure": 29.5
}
Run Code Online (Sandbox Code Playgroud)
数据正好进入Mongo数据库。接下来,我试图构建一个基于Flask的仪表板,使我能够查看记录的数据。在仪表板的其中一个页面上,我想显示当前记录的值,因此我需要做的是提取上一次测量并将其传递给flask模板以呈现到浏览器。
我在这里找到了可以使用的帖子:
data = db.measurements.find().limit(1).sort({"$natural": -1})
Run Code Online (Sandbox Code Playgroud)
但是自然调用似乎并不是有效的选择find
。
这有效:
measurement = mongo.db.measurements.find_one()
Run Code Online (Sandbox Code Playgroud)
它拉回了一个随机测量值,然后我可以将其传递给烧瓶模板,但是如何使用sort获得最新的测量值?
我试过了:
measurement = mongo.db.measurements.find_one().sort([("timestamp", -1)])
Run Code Online (Sandbox Code Playgroud)
但这会产生属性错误: AttributeError: 'dict' object has no attribute 'sort'
我也尝试过:
cursor = mongo.db.measurements.find().limit(1).sort({"timestamp": -1})
Run Code Online (Sandbox Code Playgroud)
但这也不起作用。
我在这里缺少什么,有人可以给我快速,完整的解决方法吗?
事实证明,Pymongo具有不同的排序格式。您不能传递JSON对象,而必须使用字典。一旦我解决了,所有的工作就可以了:
cursor = mongo.db.measurements.find().sort([('timestamp', -1)]).limit(1)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4395 次 |
最近记录: |