【问题标题】:How to Loop Over Date Range in ArangoDB如何在 ArangoDB 中循环日期范围
【发布时间】:2019-01-24 09:45:55
【问题描述】:

我需要为开始日期和结束日期之间的每个日期返回一个值。

对于每个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) 循环,并添加所有不存在的日期。

【问题讨论】:

    标签: date arangodb echarts arangojs


    【解决方案1】:

    请看:https://docs.arangodb.com/3.4/AQL/Functions/Date.html

    如果您有日期格式的属性,那么您可以使用 for 循环枚举集合的项目,并在属性上使用过滤器以获取特定范围内的日期。正如你已经展示的那样。在属性上添加索引会给你一个很好的加速。它将确保仅检查具有匹配日期的对象。

    【讨论】:

    • 是的,但我需要一定范围内的所有日期,而不仅仅是集合中存在的日期。对日期进行过滤将仅返回数据中存在的日期。
    • 抱歉,刚开始阅读您的问题时,我刚刚接到电话,但没有仔细阅读。虽然我想在客户端或以不同的方式处理它会更好,你可以尝试这样的事情:“FOR d IN 0..20 RETURN DATE_FORMAT(DATE_NOW()+d*3600*24*1000,' %yyyy-%mm-%dd')"
    • 是的,最好在查询之外完成,谢谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2010-12-23
    • 2018-09-19
    • 1970-01-01
    • 2011-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多