1

使用 REST API 获取测量值时,我可以传递revert参数来反转测量值的顺序:

https://tenant.cumulocity.com/measurement/measurements?revert=true

但是,只要我将一个额外的设备作为参数传递,

https://tenant.cumulocity.com/measurement/measurements?revert=true&source=876123

revert 关键字似乎停止工作。显示的第一个值是实际最近值前一天的某个时间。事实上,当指定revert=false或省略参数时,显示的第一个值的时间戳实际上是按时间顺序在第一个显示的值的时间戳之后revert=true

  • 第一项没有指定来源和revert=true"2015-12-20T18:15:00.000+01:00"
  • 指定来源的第一项和revert=true"2015-12-19T01:25:00.000+01:00"
  • 指定来源的第一项和revert=false"2015-12-19T12:50:00.000+01:00"

对此是否有任何解释,或者指定来源时revert关键字无效?

4

1 回答 1

2

为了充分理解:

  • 当有人查询我们的数据库时,我们得到正确的索引并根据该索引返回结果(性能原因);根据查询参数选择索引,

  • 参数“revert”在这个索引上起作用,确切的意思是返回结果以恢复到索引顺序

为什么在您的情况下您会得到错误的结果:

第一项没有指定来源并且revert=true ...

我们得到“自然”索引(将文档添加到数据库的顺序),并返回元素以恢复添加顺序。顺序或添加与时间顺序之间的匹配是偶然的

指定来源的第一项...

在这种情况下,我们得到索引'bySource',这是'source'属性上的b-tree,将仅按'source'排序;在这种情况下,数据不是按“时间”排序的

如果您想获得特定“来源”的结果并按“时间”排序,则必须强制应用到 ues bySourceAndTime 索引:) 以及如何执行此操作,请使用此 URL

https://tenant.cumulocity.com/measurement/measurements?dateTo=2015-12-22&dateFrom=1970-01-01&source=10307&revert=false

在这种情况下,应用程序通过SourceAndByTime 获取索引,并且索引具有按源和时间排序的数据,并且当您添加revert = true 时,结果将恢复到时间顺序。

最好的问候,
Arkadiusz

于 2015-12-21T16:00:27.283 回答