【问题标题】:How to get data from a property with a JSON document embedded using Cypher如何从使用 Cypher 嵌入 JSON 文档的属性中获取数据
【发布时间】:2019-09-24 20:06:00
【问题描述】:

我有以下情况: 我有一些信息存储在 Neo4j 中。一个属性存储一个 JSON 文档,我想获取这个 JSON 文档中的信息。 我已经检索了数据,甚至是使用 MATCH 的 JSON 字段:

MATCH (n:Node) 返回 n.id, n.nodeInfo 作为 JSONInfo

JSONInfo(Node 的一个属性),具有 JSON 信息:

{ "时间戳":"2018-03-11T04:58:24Z", "field1":"358716053191804", “字段2”:“732111149743974”, “版本字段”,“3.9.1” "field3":"0", “字段4”:“0” }

但是,我只想获取 field1,它具有内部 JSON 属性。

在 MATCH 命令中检索此字段的最佳方法是什么?

提前致谢

【问题讨论】:

    标签: neo4j cypher


    【解决方案1】:

    首先,您的示例不是有效的 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,您可以使用 JSON conversion functions from APOC Procedures 将 JSON 对象转换为地图,然后只需使用点符号来访问地图属性:

    MATCH (n:Node)
    RETURN apoc.convert.fromJsonMap(n.nodeInfo).field1 as field1
    

    请记住,JSON 地图字符串中的地图属性无法编入索引,因此您的 JSON 字符串属性中的数据应用于存储和检索,而不是用于查找。

    【讨论】:

    • 是的,我在 JSON 文件和 APOC 程序中的错误都是正确的。有用!!非常感谢
    猜你喜欢
    • 1970-01-01
    • 2019-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多