我有一个图表,其中包含用户之间的关系,显示用户访问过其他人的个人资料,以及何时:
(visitor:User)-[:VISITED]->(visitee:User)
但是,自从时间开始以来,我不想存储每次访问。我只想要用户访问过的最后X个用户。所以在添加新关系之前我必须删除最旧的关系,但我不知道如何删除它。我只能按日期订购一份清单:
MATCH (visitor:User)-[r:VISITED]->(User)
WHERE visitor.user_id = %s
RETURN r
ORDER BY r.date
我需要删除此列表中的第一个关系。我怎么能这样做?
答案 0 :(得分:4)
最简单的方法是在ORDER BY
之前使用LIMIT
和DELETE
。即:
MATCH (visitor:User)-[r:VISITED]->(User)
WHERE visitor.user_id = %s
WITH r ORDER BY r.date LIMIT 1
DELETE r
更有效的机制可能是保留一个链接的访问列表(这里有一些讨论:http://docs.neo4j.org/chunked/stable/cypherdoc-linked-lists.html)