针对IBM Cloudant的基本上是couchDB的聚合查询

我是http://airpollution.online/的贡献者,这是一个开放的环境networking平台构build开放源代码,具有IBM Cloudant,因为它是数据库服务。

平台的架构是这样的,我们需要从一个集合中获取每个空气污染测量设备的最新数据。 就我的经验而言,我已经写了聚合查询来获取每个设备的最新数据,在每个集合中可用的每个文档中,按照时代的时间键。

示例聚合查询是:

db.collection("hourly_analysis").aggregate([ { $sort: { "time": -1, "Id": -1 } }, { $project: { "Id": 1, "data": 1, "_id": 0 } }, { $group: { "_id": "$Id", "data": { "$last": "$$ROOT" } } } 

如果有人有关于如何在IBM Cloudant中编写devise文档的想法/build议,请帮助我! 谢谢! PS我们仍然需要为此项目制作后端开源代码。 (可能需要一些时间)

在CouchDB / Cloudant中,这通常比专门的查询更好。 这是一个棘手的问题,但试试这个: – 一个映射步骤,发出设备ID和时间戳作为复合键的两个部分,再加上设备读取值 – 减less步骤,寻找最大的时间戳,并返回最大最新的)时间戳和随之而来的读数(这两个值都是需要的,因为当重新还原时,我们需要知道时间戳,所以我们可以比较它们) – group_level设置为1的视图将为您提供每个设备的最新读数。

在大多数情况下,你可以使用内build的reduce函数,但是在这里你需要一个key的函数。

(之前我解决这个问题的方法是将传入的数据复制到“最新的阅读”存储中,并以正常的方式将其写入数据库,如果您只想要最新的阅读,就可以非常快地访问它。 )