所以我知道你创建节点时neo4j每个节点都有一个UUID。我知道您可以通过访问ID来访问该UUID的特定节点。例如:
START n=node(144)
RETURN n;
我如何获得最后创建的节点?我知道我可以显示所有节点,然后在带有相应ID的anotehr查询中运行相同的命令,但有没有办法快速完成此操作?我可以按ID订购节点并限制1吗?有更简单的方法吗?无论哪种方式,我都没有想通过简单的密码查询来解决这个问题。
答案 0 :(得分:5)
每次都不能保证新节点的id始终大于以前创建的所有节点,
因此,更好的方法是设置created_at属性,该属性在创建节点时存储当前时间戳。 您可以使用timestamp()函数存储当前时间戳
然后,
Match (n)
Return n
Order by n.created_at desc
Limit 1
答案 1 :(得分:2)
请注意,Neo4j的内部节点ID不是UUID。也不保证新节点总是具有比所有先前创建的节点更大的id。节点id是(乘以一些常量)节点在存储文件中的位置的偏移量。由于空间回收,新节点可能会获得较低的ID号。
大胖警告:不要对节点ID采取任何假设。
根据您的要求,您可以将所有节点组织到链接列表中。有一个具有特定标签的“神奇”节点,例如References
始终与最新创建的节点有关系:
CREATE (entryPoint:Reference {to:'latest'}) // create reference node
创建域中的节点后,您需要执行多项操作:
latest
关系,如果现有
MATCH (entryPoint:Reference {to:'latest'})-[r:latest]->(latestNode)
CREATE (domainNode:Person {name:'Foo'}), // create your domain node
(domainNode)-[:previous]->(latestNode), // build up a linked list based on creation timepoint
(entryPoint)-[:latest]->(domainNode) // connect to reference node
DELETE r //delete old reference link
答案 2 :(得分:-1)
我终于找到了答案。 ID()函数将返回节点的neo4j ID:
Match (n)
Return n
Order by ID(n) desc
Limit 1;