这是我的模特: {{1}}
我想在一个密码查询中尝试实现的是根据给定A和所有B节点的最新R.timestamp(或C.number)来获取最新的C节点。即返回一个A,多个B和一个与每个B相关的具有最高R.timestamp的C。最好的方法是返回B节点而与C没有任何关系。
在SQL中,我会按分组排序,只返回我希望每组的n行,我没有足够的经验使用COLLECT或UNWIND来获得相同的结果。
答案 0 :(得分:3)
首先找到您的a
节点,然后在b
和c
节点上选择匹配。这也会找到与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;