带时间戳的Neo4j Cypher查询

时间:2014-05-03 04:31:10

标签: neo4j cypher

我正在尝试查询数据库中最近创建的10个节点。我有尝试

MATCH (a:Post) RETURN a ORDER BY TIMESTAMP() LIMIT 10

我也试过这个

MATCH (a:Post) RETURN a ORDER BY TIMESTAMP() DESC LIMIT 10

如果我按顺序创建内容为{one,two,three}的节点,则两个查询都会按顺序1,2,3生成节点。关于为什么会发生这种情况的任何想法或想法?

1 个答案:

答案 0 :(得分:7)

TIMESTAMP()scalar function,表示查询执行的确切时间。它与创建节点或关系的时间没有任何关系。

这就是为什么你得到两个查询完全相同的结果。您只是按当前时间排序,这并不是很有意义,因为所有记录的当前时间都完全相同。

Neo4j默认不存储任何创建时间戳。如果它对您很重要,您需要将它们存储为附加属性。这是您应该使用标量函数的地方。

CREATE (:Post {created_at: TIMESTAMP()})

完成后,匹配并按此顺序排序。

MATCH (a:Post) RETURN a ORDER BY a.created_at LIMIT 10

请注意,您要按created_at属性进行排序,而不是TIMESTAMP()标量函数。