neo4j set 多个值

在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"} | ["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.html

neo4j set 多个值

neo4j set 多个值_Neo4j:收集多个值相关推荐

  1. 好文:挣值管理(4) - 让挣值管理实用!

    https://mp.weixin.qq.com/s/ufLc-ZAuBqQiZCIdGAJHLg 你的位置: 挣值管理无用论(1) 从搬石头的故事说起(1) 三大基本要素:PV,AC,EV(2) 成 ...

  2. python尝试不同的随机数进行数据划分、使用卡方检验依次计算不同随机数划分下训练接和测试集所有分类特征的卡方检验的p值,如果所有p值都大于0.05则训练集和测试集都具有统计显著性、数据划分合理

    python尝试不同的随机数进行数据划分.使用卡方检验依次计算不同随机数划分下训练接和测试集所有分类特征(categorical)的卡方检验的p值,如果所有p值都大于0.05则退出循环.则训练集和测试 ...

  3. R语言使用car包的outlierTest函数通过假设检验的方法检测回归模型中的异常值(outlier)、输出异常值对应的统计量、p值以及Bonferonnii校正p值

    R语言使用car包的outlierTest函数通过假设检验的方法检测回归模型中的异常值(outlier).输出异常值对应的统计量.p值以及Bonferonnii校正p值 目录

  4. C/C++左值性精髓(二)哪些表达式是左值,哪些是右值?----右值表达式

    2019独角兽企业重金招聘Python工程师标准>>> C对于右值的定义是表达式的值,C中所有完整表达式的结果都是右值.所谓完整表达式(full expression),指的是这样的 ...

  5. python如何返回多个值_python- 如何返回多个值 | 学步园

    如何写一个返回多个值的函数 函数的return 语句只能返回一个值,可以是任何类型. 因此,我们可以"返回一个 tuple类型,来间接达到返回多个值 ". 例:   x 除以 y ...

  6. XamarinEssentials教程移除键值首选项的键值

    XamarinEssentials教程移除键值首选项的键值 如果开发者不再使用首选项中的某一项时,可以将该项移除掉.此时可以使用Preferences类的Remove()方法,该方法可以将存在于首选项 ...

  7. python os.system返回值_python os.system()返回值判断

    最近遇到os.system()执行系统命令的情况,上网搜集了一下资料,整理如下,以备不时之需,同时也希望能帮到某些人. 一.python中的 os.system(cmd)的返回值与linux命令返回值 ...

  8. 【Android 进程保活】oom_adj 值 ( oom_adj 值对应的进程优先级 | oom_adj 值动态改变 | 进程保活优化方向 )

    文章目录 一.oom_adj 值对应的进程优先级 二.oom_adj 值动态改变 1.正常运行时的 oom_adj 值 2.按下 Home 键后的 oom_adj 值 3.按下回退键后的 oom_ad ...

  9. 图像五值化与基于三值图像的车牌识别(1)

    庆祝2011年新年 张忠义 海口愚佬会教育科技有限公司 全文下载 www.yulaohui.com/color5_2/ 摘 要:      图像五值化是通过公式Y =(R+G)/2,将RGB空间映射到 ...

  10. php 二维数组根据键值合并二维数组_php数组根据某键值,把相同键值的合并最终生成一个新的二维数组...

    匿名用户 1级 2013-12-29 回答 php数组根据某一个键值,把相同键值的合并生成一个新的二维数组 源数据: $infos = array( array( 'a' => 36, 'b' ...

最新文章

  1. 一个历时五天的 Bug
  2. 二进制、字节、int范围、编码
  3. 老年手机计算机的按键怎么调至桌面,怎样设置一键回到桌面啊,就是这个图标(如图)...
  4. 学习TP5(一):TP5框架下载与快速入门使用
  5. 综合富贵论坛,富贵网,新老富贵的简单解释
  6. python调用windows aplication
  7. 气象竞赛计算机技巧,气象装备保障竞赛及故障排除技巧分析
  8. 注意力机制+注意力汇聚
  9. 多维尺度分析MDS详解
  10. 反射--成员属性:Feild
  11. 高德地图自定义地图怎么去除最上边这个默认的蓝色天空?太丑了!!
  12. 四色定理 - 从时序着色法到四色定理的逻辑证明
  13. RMAN的备份与恢复
  14. 战地3皓月服务器的账号,【国内流畅联机 / 免橘子】皓月云-战地4 使用方法 !战士招募!...
  15. C语言bound函数,C++中lower_bound函数和upper_bound函数
  16. iOS客户端的title不显示解决方案
  17. python使用for循环输出0~10之间的整数_用Python编写一个程序,使用for循环输出0~10之间的整数...
  18. 线性代数方程组数值解法
  19. 关于错误:ERROR 2013 (HY000):
  20. cannot find module ‘xxx‘ 解决办法

热门文章

  1. bzoj4403-序列统计【Lucas,组合数学】
  2. P1613-跑路【Floyd,倍增】
  3. jzoj3382-七夕祭【贪心,中位数】
  4. GitHub 发布了一款重量级产品,可直接运行代码
  5. 分库分表的事务处理机制
  6. 数据库连接池的选择及其开发配置
  7. 从0部署一个动态网站
  8. [编程入门]猴子吃桃的问题
  9. 集合还有这么优雅的运算法?
  10. 2017 年编程语言排行榜:Python 排第一