我需要为开始日期和结束日期之间的每个日期返回一个值。
对于每个row
:如果日期在row.date
中,那么我需要返回row.myValue
,否则需要返回null。
示例:
dateRange = {start: '2018-01-01', end: '2018-01-03'}
aqlCollection = [
{date: '2018-01-01', myVal: 1},
{date: '2018-01-02', myVal: 2},
{date: '2017-05-18', myVal: 3}
]
这应该返回:
[
{'2018-01-01': 1},
{'2018-01-02': 2},
{'2018-01-03': null}
]
只要arangodb中有一个WHILE
循环,就可以完成此操作。或者,如果我可以使用增量器进行循环而不是做FOR date IN dates
,那么我可以说FOR date=startRange; date<endRange; date+=24hrs
。
关于如何在Arango查询中实现此目标的任何想法?如果不可能,我将在一个简单的按日期分组查询之后执行O(n)循环,并添加所有不存在的日期。
答案 0 :(得分:0)
请查看:https://docs.arangodb.com/3.4/AQL/Functions/Date.html。
如果您具有日期格式的属性,则可以使用for循环枚举集合的项目,并对该属性使用过滤器以获取特定范围内的日期。正如您已经展示的。在属性上添加索引将使您获得不错的速度。这将确保仅检查具有匹配日期的对象。