查询ArangoDB 3.1中的日期

时间:2016-11-04 10:40:28

标签: arangodb

据我所知,ArangoDB 3.1现在支持日期类型作为其新内部存储格式VelocyPack的一部分。 我应该如何在AQL查询中使用具有日期类型的字段(例如FILTER)?看起来日期类型字段的文档尚未更新: https://docs.arangodb.com/devel/AQL/Functions/Date.html

有人可以提供AQL查询示例吗?像

这样的东西
FOR p IN person FILTER p.birthday == '2016-11-04' RETURN p

字段p.birthday是日期类型吗?

2 个答案:

答案 0 :(得分:0)

由于VelocyPack主要用作ArangoDBs内部存储格式,因此AQL,shell或web-ui目前不支持其他VelocyPack类型。他们都必须使用json进行处理。

目前,创建具有日期类型的文档的唯一方法是使用Java-Driver(版本4.1.0)。驱动程序也是唯一可能因AQL查询而获得VelocyPack的可能性。每个其他实现都会自然地返回json,而不需要额外的VelocyPack类型。

除此之外,AQL-date函数在当前开发状态​​下不支持VelocyPack日期类型。

答案 1 :(得分:0)

自ArangoDB版本3.0起,ArangoDB使用VelocyPack作为内部存储格式。 VelocyPack有一个Date日期类型以及JSON中不存在的其他一些数据类型。

但即使VelocyPack用作ArangoDB中的内部存储格式,ArangoDB的所有外部API仍然是基于JSON的,这意味着它们只支持JSON本机支持的数据类型(null,boolean,number,string,array,object )。

支持更多(非JSON)数据类型在路线图上,但从ArangoDB 3.1开始还没有。支持更多数据类型需要为这些数据类型编写一些内部包装函数,并使所有AQL运算符与它们一起正常工作。

因此,在版本3.1中,保存日期值的选项仍然是使用日期时间字符串(例如,使用ISO8601格式,例如2016-11-10T14:08:20.236Z来使用数值来存储时间戳。