wordpress著名网站,学工网站建设,星大建设集团招聘网站,WordPress网站封装app教程neo4j set 多个值在Neo4j的密码查询语言中#xff0c;我最喜欢的功能之一是COLLECT#xff0c;它使我们能够将项目分组到一个数组中以备后用。 但是#xff0c;我注意到人们有时难以确定如何使用COLLECT收集多个项目#xff0c;并且很难找到一种方法。 考虑以下数据集我最喜欢的功能之一是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} | [Event1,Event2] |
--------------------------------------------
1 row 效果很好但是如果我们要收集事件名称和时间戳但又不想返回整个事件节点该怎么办 我见过一些人在研讨会上尝试过的方法如下 MATCH (p:Person)-[:EVENT]-(e)
RETURN p, COLLECT(e.name, e.timestamp) 不幸的是这不能编译 SyntaxException: Too many parameters for function collect (line 2, column 11)
RETURN p, COLLECT(e.name, e.timestamp)^ 正如错误消息所暗示的那样COLLECT函数仅接受一个参数因此我们需要寻找另一种解决问题的方法。 一种方法是将两个值放入文字数组中这将导致将数组作为返回结果 $ MATCH (p:Person)-[:EVENT]-(e)RETURN p, COLLECT([e.name, e.timestamp]);
----------------------------------------------------------
| p | COLLECT([e.name, e.timestamp]) |
----------------------------------------------------------
| Node[0]{name:Mark} | [[Event1,1234],[Event2,4567]] |
----------------------------------------------------------
1 row 这种方法的烦人之处在于当您添加更多项目时您会忘记将每条数据放在哪个位置因此我认为一种更好的方法是收集项目图 $ MATCH (p:Person)-[:EVENT]-(e)RETURN p, COLLECT({eventName: e.name, eventTimestamp: e.timestamp});
--------------------------------------------------------------------------------------------------------------------------
| p | COLLECT({eventName: e.name, eventTimestamp: e.timestamp}) |
--------------------------------------------------------------------------------------------------------------------------
| Node[0]{name:Mark} | [{eventName - Event1, eventTimestamp - 1234},{eventName - Event2, eventTimestamp - 4567}] |
--------------------------------------------------------------------------------------------------------------------------
1 row 在本周早些时候运行的Clojure Neo4j Hackathon中 这被证明是一种特别令人愉悦的方法因为我们可以轻松地在Clojure代码中破坏地图集合。 翻译自: https://www.javacodegeeks.com/2014/10/neo4j-collecting-multiple-values.htmlneo4j set 多个值