2014-07-07 110 views
1

我有一個包含用戶之間的關係,展示了用戶訪問其他人的個人資料,並在圖表:Neo4j的暗號查詢:獲得最後N個元素

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

但我不希望存儲每次訪問自從時間的開始。我只想要用戶訪問過的最後一個X用戶。所以在添加新的關係之前,我必須刪除最舊的關係,但我不知道如何刪除它。我只能得到按日期排序的列表:

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

我需要的是刪除此列表中的第一個關係。我怎樣才能做到這一點?

回答

4

最簡單的方法是在DELETE之前使用ORDER BYLIMIT。即:

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

+0

BTW,數據的內置的過期將是一個非常不錯的功能。 MongoDB具有TTL集合,並且Redis已過期。 – albertoperdomo