我正在尝试查询数据库中最近创建的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生成节点。关于为什么会发生这种情况的任何想法或想法?
答案 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()
标量函数。