微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

由于“src”的属性值为空,因此无法合并以下节点:(:Node {src: null})

如何解决由于“src”的属性值为空,因此无法合并以下节点:(:Node {src: null})

我对 neo4j 还很陌生,我想编写一个查询来读取 .json 格式并创建节点图。下面是我的查询,它在没有 null 属性文件中成功,当我的 json 文件中有 null 属性时不成功。

CALL apoc.load.json("file:/graph-phase1-labelled.json") YIELD value  

UNWIND value.nodes as nodes

UNWIND nodes.properties as prop

MERGE(n1:Node{src:prop.sourceIP})
 
MERGE(n2:Node{dst:prop.destIP})  

WITH n1,n2,prop

MERGE (n1)-[:CONNECTED_TO]->(n2)

RETURN n1,prop

有人知道什么可以解决问题吗?

解决方法

在 Neo4j 中创建属性时,您不能有空属性。

有很多方法可以解决这个问题,但是获取一些数据的一个快速选择可能是使用 coalesce() 函数,该函数将使用它命中的第一个非空值,例如>

CALL apoc.load.json("file:/graph-phase1-labelled.json") YIELD value
UNWIND value.nodes as nodes
UNWIND nodes.properties as prop
MERGE(n1:Node{src:coalesce(prop.sourceIP,"No IP")})
MERGE(n2:Node{dst:coalesce(prop.destIP,"No IP"})
WITH n1,n2,prop
MERGE (n1)-[:CONNECTED_TO]->(n2)
RETURN n1,prop
,

感谢您的回答,问题是我试图在其上构建图形的转储具有一些空属性,我不得不忽略它们以继续处理其余节点。 “无 IP”不起作用,但我设法解决了它
通过以下:

    call apoc.load.json("file:/graph-phase1-labelled1.json") yield value
    unwind value.nodes as nodes
    unwind nodes.properties as prop 
    with prop where prop.sourceIP is not null
    with prop where prop.destIP is not null
    merge(n1:Node{src:prop.sourceIP}) 
    merge(n2:Node{dest:prop.destIP}) 
    with prop,n1,n2
    merge (n1)-[ :connected_to]->(n2)
    return n1,prop

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。