在Neo4j的密码查询语言中,我最喜欢的功能之一是COLLECT,它使我们能够将项目分组到一个数组中以备后用。
但是,我注意到人们有时很难弄清楚如何使用COLLECT收集多个项目,并且很难找到一种方法。
考虑以下数据集:
create (p:Person {name: "Mark"})
create (e1:Event {name: "Event1", timestamp: 1234})
create (e2:Event {name: "Event2", timestamp: 4567})
create (p)-[:EVENT]->(e1)
create (p)-[:EVENT]->(e2)
如果我们想返回每个人以及他们参加的活动名称的集合,我们可以编写以下内容:
$ MATCH (p:Person)-[:EVENT]->(e)
> RETURN p, COLLECT(e.name);
+--------------------------------------------+
| p | COLLECT(e.name) |
+--------------------------------------------+
| Node[0]{name:"Mark"