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

时间:2014-07-07 22:13:37

标签: neo4j cypher

我有一个图表,其中包含用户之间的关系,显示用户访问过其他人的个人资料,以及何时:

(visitor:User)-[:VISITED]->(visitee:User)

但是,自从时间开始以来,我不想存储每次访问。我只想要用户访问过的最后X个用户。所以在添加新关系之前我必须删除最旧的关系,但我不知道如何删除它。我只能按日期订购一份清单:

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

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

1 个答案:

答案 0 :(得分:4)

最简单的方法是在ORDER BY之前使用LIMITDELETE。即:

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