Neo4j 密码查询:获取最后 N 个元素

Cés*_*pia 2 neo4j cypher

我有一个包含用户之间关系的图表,显示哪些用户访问了另一个人的个人资料以及何时访问:

(visitor:User)-[:VISITED]->(visitee:User)
Run Code Online (Sandbox Code Playgroud)

但我不想存储从一开始以来的每次访问。我只想要用户访问过的最后 X 个用户。因此,在添加新关系之前,我必须删除最旧的关系,但我不知道如何删除它。我只能得到按日期排序的列表:

MATCH (visitor:User)-[r:VISITED]->(User)
WHERE visitor.user_id = %s
RETURN r
ORDER BY r.date
Run Code Online (Sandbox Code Playgroud)

我需要的是删除此列表中的第一个关系。我怎样才能做到这一点?

Chr*_*man 5

最简单的方法是在 之前使用 anORDER BY和 a 。IE:LIMITDELETE

MATCH (visitor:User)-[r:VISITED]->(User)
WHERE visitor.user_id = %s
WITH r ORDER BY r.date LIMIT 1
DELETE r
Run Code Online (Sandbox Code Playgroud)

更有效的机制可能是保留访问的链接列表(这里有一些讨论:http ://docs.neo4j.org/chunked/stable/cypherdoc-linked-lists.html )