使用时间戳查询Neo4j的年度统计信息

时间:2014-01-24 10:38:13

标签: timestamp neo4j cypher

我被赋予了可视化使用Neo4j作为后端的应用程序的功能使用的任务。例如,我希望可视化每年创建多少“愿望”元素。 Wish节点有一个creationDate属性,可以在创建元素时保存时间戳。

输出应如下所示:

Year #Wishes
2000  20 
2001 99

...

我目前可以输出的最好的是

Year          Description
1365431858      "smth"
1365431859      "smth2"

...

START n = node(0)
MATCH (n)-[:WISH]->(m)
RETURN m.creationDate as Year, m.description as Description

如何将时间戳分组为年/月?该应用程序正在使用neo4j 1.8.3

2 个答案:

答案 0 :(得分:1)

我认为你可以使用just division来提取年份。

类似的东西:

return 1970 + round(m.creationDate / (365.242 * 24 * 3600)), count(m)

所以在你的情况下,它将是2014年。

答案 1 :(得分:0)

因为1.8.3没有原生日期类型,所以我不相信你能够在一个密码查询中按年份分组。

以下两种方法需要考虑:

1)具有日期范围的多个查询。所以,2012 可能看起来像:

MATCH (n)-[:WISH]->(m)
WHERE m.creationDate > '1325376000' AND m.creationDate < '1356998399'
return count(m) as total, '2012' as year

可能不是最优雅的方法,但它是一个解决方案:)

2)修改模型以包含与日期信息的关系。如果您所寻找的只是一年的关系,那么可以很快处理。这是一篇讨论该选项的帖子:

Modeling dates in Neo4j