带时间戳的Neo4j Cypher查询

use*_*794 3 neo4j cypher

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

MATCH (a:Post) RETURN a ORDER BY TIMESTAMP() LIMIT 10
Run Code Online (Sandbox Code Playgroud)

我也尝试过这个

MATCH (a:Post) RETURN a ORDER BY TIMESTAMP() DESC LIMIT 10
Run Code Online (Sandbox Code Playgroud)

如果我按顺序创建内容为{一,二,三}的节点,则两个查询都会按顺序1,2,3生成节点.关于为什么会这样的想法或想法?

ADT*_*DTC 8

TIMESTAMP()是一个标量函数,表示查询执行的确切时间.它与创建节点或关系的时间无关.

这就是为什么你得到两个查询完全相同的结果.你只是按当前时间排序,这没有多大意义,因为所有记录的当前时间完全相同.

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

CREATE (:Post {created_at: TIMESTAMP()})
Run Code Online (Sandbox Code Playgroud)

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

MATCH (a:Post) RETURN a ORDER BY a.created_at LIMIT 10
Run Code Online (Sandbox Code Playgroud)

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