网站首页 > 技术文章 正文
译者言:本文介绍了在Neo4j中操作字典类型数据的三个APOC函数apoc.map.clean, apoc.map.values, apoc.map.fromLists。
我们有这样一个场景,需要创建一个节点,但节点的属性要从一个字典对象中获取,这个如何实现呢?我们假设APOC库已安装。
首先,我们创建一个包含有我Twitter信息的字典对象。
:param document => { id: 14707949, name: "Mark Needham", username: "markhneedham", bio: "Developer Relations @neo4j", location: "London, United Kingdom", url: "http://www.markhneedham.com", join_date: "8 May 2008", join_time: "5:58 PM", tweets: 24710, following: 2479, followers: 5054, likes: 1014 }
译者言:我们可以通过 :params 这个命令看到上面创建字典对象
我们要基于上面这些数据创建一个User节点,但是只想使用其中部分键值。此时,我们可以使用apoc.map.clean 函数删除一些键,下面代表显示了我将删除join_date 和 join_time 键。
WITH ["join_date", "join_time"] AS keysToRemove RETURN apoc.map.clean($document, keysToRemove, []) AS result
删除键是一种方法,还有另一种方法是指定需要使用的键。 通过apoc.help('apoc.map') 能找到所有字典相关的方法,但是很不幸,并没有发现取指定键值的方法。
但是我们可以将两个APOC函数组合起来使用完成这个效果。首先使用apoc.map.values函数,将字典对象中一组指定键的值提取到一个数组中。
WITH ["name", "username", "bio", "following", "followers"] AS keysToKeep RETURN apoc.map.values($document, keysToKeep)
然后,再使用apoc.map.fromLists 函数重构出一个新的字典对象。
WITH ["name", "username", "bio", "following", "followers"] AS keysToKeep RETURN apoc.map.fromLists(keysToKeep, apoc.map.values($document, keysToKeep)) AS result
好,最后,我们再来看看文章开始的需求:创建一个结点,使用一个字典中指定键的值作为该结点的属性。代码如下:
WITH ["name", "username", "bio", "following", "followers"] AS keysToKeep MERGE (u:User {id: $document.id }) SET u += apoc.map.fromLists($keysToKeep, apoc.map.values($document, $keysToKeep))
OK,一切顺利,希望这些能帮助到你。
原文链接:https://markhneedham.com/blog/2019/05/12/neo4j-keep-filter-keys-map-apoc/ 译者言: 如果我的描述有不准确或不清楚的地方,欢迎在文章下进行交流。
猜你喜欢
- 2024-09-18 SQLSERVER:INSERT、UPDATE、DELETE操作
- 2024-09-18 牛逼!2021 最新 Spring 面试题(spring面试题汇集与答案)
- 2024-09-18 为什么 MySQL 不推荐使用 join?(为啥mysql)
- 2024-09-18 MySQL中带子查询的删除操作(mysql子查询语句举例)
- 2024-09-18 VBA数组与字典解决方案第27讲:两列数据相互去掉重复值后合并
- 1514℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 562℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 507℃MySQL service启动脚本浅析(r12笔记第59天)
- 486℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 484℃启用MySQL查询缓存(mysql8.0查询缓存)
- 464℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 444℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 441℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- c语言min函数头文件 (68)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)