neo4j - 如何从使用 Cypher 嵌入 JSON 文档的属性中获取数据
问题描述
我有以下情况:我有一些信息存储在 Neo4j 中。一个属性存储一个 JSON 文档,我想获取这个 JSON 文档中的信息。我已经检索了数据,甚至是使用 MATCH 的 JSON 字段:
MATCH (n:Node) 返回 n.id, n.nodeInfo 作为 JSONInfo
JSONInfo(它是 Node 的一个属性),具有 JSON 信息:
{ "TIMESTAMP":"2018-03-11T04:58:24Z", "field1":"358716053191804", "field2":"732111149743974", "version_field", "3.9.1" "field3":"0", "field4":"0" }
但是,我只想获取具有内部 JSON 属性的 field1。
在 MATCH 命令中检索此字段的最佳方法是什么?
提前致谢
解决方案
首先,您的示例不是有效的 JSON。您的version_field
键和值应该用冒号分隔,而不是逗号,并且在“3.9.1”之后需要一个逗号。
{ "TIMESTAMP":"2018-03-11T04:58:24Z", "field1":"358716053191804", "field2":"732111149743974", "version_field":"3.9.1", "field3":"0", "field4":"0" }
一旦修复,并且该字段是有效的 JSON,您可以使用APOC 过程中的 JSON 转换函数来执行从 JSON 对象到地图的转换,然后只需使用点符号来访问地图属性:
MATCH (n:Node)
RETURN apoc.convert.fromJsonMap(n.nodeInfo).field1 as field1
请记住,无法索引 JSON 地图字符串中的地图属性,因此您的 JSON 字符串属性中的数据应用于存储和检索,而不是用于查找。
推荐阅读
- android - 如何将 Firebase 实时数据库子值移动到 android 工作室中的另一个子值?
- algorithm - 求解递归关系 T(n) = n*T(n - 1) + n! (n > 0, T(0) = 2)
- spring - Spring Boot icw 旧版 Spring 应用程序
- javascript - 使用转换对象重命名 JavaScript 中的对象键
- c++ - 写入超过 1GB 的 .txt 文件时的奇怪行为
- python - 在 Keras 中将模型合二为一
- laravel - 当队列中的所有 Laravel 作业完成时运行一次函数
- excel - 如果检测到某些文本,则复制粘贴列
- jquery - dateformat 不适用于 datepicker jQuery AJAX
- javascript - Javascript:打开新窗口并将结果发送回父窗口