由于 '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,n2,prop

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

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

有很多方法可以解决这个问题,但一个快速的方法是使用coalize((函数来获取一些数据,该函数将使用它命中的第一个非零值,例如

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,n2,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,n2,prop

相关内容

  • 没有找到相关文章

最新更新