无论如何要在 Titan/gremlin 中查询日期?
例如查找过去 X 天内的所有结果
任何帮助将非常感激。
最佳答案
最好的方法是简单地将日期存储为 Long 值,并可能对边缘中的此类字段进行索引,以便您可以利用 limit()
、 interval
等。请参阅有关该主题的 Titan wiki 页面:
https://github.com/thinkaurelius/titan/wiki/Vertex-Centric-Indices
它通过 Twitter 示例映射到您的特定请求,其中它在 time
上建立索引。您可以通过简单地计算“X 天”的毫秒数,然后找到之后的所有结果,找到基于 time
的结果:
g.v(1).outE.has('time',T.gte, fiveDaysAgoInMs).inV
请注意,从 Titan 0.4.1 开始,您还可以定义索引的方向性,以便首先返回最新的项目(不再需要反向索引属性):
https://github.com/thinkaurelius/titan/wiki/Type-Definition-Overview#sortkeytitantype-and-signaturetitantype
此外,如果您不介意一些非规范化,除了 Long 值之外,您还可以将日期存储为可排序的 String 值(例如 iso-8601)。这有助于您轻松查看日期,而无需额外转换。
关于Gremlin 日期过滤器方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20567483/