在Neo4j中,我有多个节点,其中包含多个长度的属性集。
例如,一组节点
(id:PERSON{userid:0, education_school_id[21,25,29]})
(id:PERSON{userid:1, education_school_id[21]})
(id:PERSON{userid:2, education_school_id[21,25]})
(id:PERSON{userid:3, education_school_id[21,25,27]})
(id:PERSON{userid:4, education_school_id[21,25,66]})
(id:PERSON{userid:5, education_school_id[21,25,27]})
(id:PERSON{userid:6, education_school_id[21,25,29,43,22]})
(id:PERSON{userid:7, education_school_id[21,22]})
(id:PERSON{userid:8, education_school_id[21,25]})
(id:PERSON{userid:9, education_school_id[21,25,27,24,32]})
(id:PERSON{userid:10, education_school_id[21,25,66,29]})
(id:PERSON{userid:11, education_school_id[21,25,44]})
现在我想要一个 cypher查询语句,它只比较所有属性集的最后一个属性,并根据用户ID对节点进行分组,如下所示
29 0,10
21 1
25 2,8
32 9
44 10
22 6,7
27 3,5
66 4
[订单并不重要]
这有点像与数组array[length-1]
进行比较。
我不知道个别名单的长度。
目前我正在使用,
match(n) where exists(n.education_school_id) return n.education_school_id, collect(n.userid) ;
但是,这会按属性集整体对节点进行分组。
任何帮助将不胜感激。
另一个注意事项:我的很多问题最近都被贬低了。如果有人想要投票,请随意这样做,但要留下一些建设性的批评。我尽量使我的问题尽可能接近网站的规则。尽管我付出了很多努力,但仍然会向我提出错误提示。
答案 0 :(得分:1)
您需要last()
功能。
我没有投票,但你已经在文档中发布了一些问题,就像这个问题一样。这不是一个复杂的问题,你可以自己找到它,它并不像你在尝试那样,这就是SO的预期。有我已经链接到的开发者手册,还有Cypher参考卡,其中List Expressions section所有内容都是浓缩形式。