Cypher - 获取最新节点

时间:2016-07-06 17:40:30

标签: neo4j cypher

这是我的模特: {{1}}

我想在一个密码查询中尝试实现的是根据给定A和所有B节点的最新R.timestamp(或C.number)来获取最新的C节点。即返回一个A,多个B和一个与每个B相关的具有最高R.timestamp的C。最好的方法是返回B节点而与C没有任何关系。

在SQL中,我会按分组排序,只返回我希望每组的n行,我没有足够的经验使用COLLECT或UNWIND来获得相同的结果。

1 个答案:

答案 0 :(得分:3)

首先找到您的a节点,然后在bc节点上选择匹配。这也会找到与b没有关系的a个节点。

MATCH (a:A)
WHERE a.name = {name}
OPTIONAL MATCH (c:C)-[:R]->(b:B)-[:R]->(a)
WITH a, b, c
ORDER BY c.number
WITH a, b, last(collect(c)) AS most_recent_c
RETURN a, b, most_recent_c;