如何使用Neo4j MERGE包含具有NULL值的属性

卢克

我有一个Node表和Edge表,它们都可以作为CSV文件使用。我设法通过以下方式加载Node表:

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM 'file:///NodesETL.csv' AS line
CREATE (:InfoNodes {id: toString(line.id), description: toString(line.description)})

此查询使用CSV文件的字段值作为:InfoNodes的属性来创建InfoNode,这很好。

InfoNode与其他InfoNode具有关系,例如,这些关系存在于具有相同标签的Node之间。这些关系存储在Edge表中,可作为其他CSV文件使用。Edge表的每一行都包含idfrom和idto字段,这些字段根据InfoNode的id属性定义了InfoNode之间的关系。边缘表还包含3个其他字段,表示关系的属性。第一属性始终是一个字符串,并且永远不会为NULL,例如永远不会为空字符串。均为字符串的secondproperty和thirdproperty可以具有NULL值,例如“”。因此,secondproperty和/或thirdproperty可以包含NULL值。我尝试使用此边缘表通过以下方法创建(:InfoNodes)之间的[:RELATIONSHIP {firstproperty:,secondproperty:,thirdproperty:}]关系:

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM 'file:///EdgesETL.csv' AS line
MATCH (from:InfoNodes{id: toString(line.idfrom)})
MATCH (to:InfoNodes{id: toString(line.idto)})
MERGE (from)-[:RELATION {firstproperty: toString(line.firstproperty), secondproperty: toString(line.secondproperty), thirdproperty: toString(line.thirdproperty)}]->(to)

当Edge表中的secondproperty和thirdproperty包含NULL值时,此第二个Cypher脚本将导致错误。Neo4j错误消息是:无法合并使用null属性值作为第二属性的关系。当我从第二个脚本中删除secondproperty字段和secondproperty:属性时,发生了相同类型的错误,并提到了Thirdproperty:无法为第三属性使用空属性值合并关系当我从上一个脚本中删除secondproperty和thirdproperty字段和属性时,然后[:将创建InfoNode之间的关系,包括存储为[:RELATION]关系的firstproperty:属性的firstproperty表字段。

问题:如何扩展第二个脚本,以便从Edge表中将第二个属性和Thirdproperty字段加载到[:RELATION]关系(包括NULL值)中的secondproperty:和thirdproperty:中?

不能与空值合并;neo4j中的“无法使用空属性值合并节点”描述了相同的问题,但是在具有空值的多个字段/属性的情况下无法回答我的问题。

逆向猎鹰

您将要重新查看开发人员指南中的合并”部分具体来说,在简介中,提到了ON CREATE和ON MATCH。这样,您可以在MERGE导致创建的情况下,或者在MERGE与现有元素匹配的情况下设置属性。

通常,您只希望合并唯一定义事物的属性(例如ID),并在ON CREATE内设置其余属性。

更改后的查询可能类似于以下内容:

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM 'file:///EdgesETL.csv' AS line
MATCH (from:InfoNodes{id: toString(line.idfrom)})
MATCH (to:InfoNodes{id: toString(line.idto)})
MERGE (from)-[r:RELATION {firstproperty: toString(line.firstproperty)}]->(to)
ON CREATE SET r.secondproperty = toString(line.secondproperty), r.thirdproperty = toString(line.thirdproperty)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Neo4j/Cypher:如何排除/包含具有多个属性的节点?

来自分类Dev

合并具有NULL属性Neo4j的节点

来自分类Dev

Neo4j:如何匹配属性数组中具有公共值的节点

来自分类Dev

如何在 Neo4j 中获取具有重复属性值的节点?

来自分类Dev

如何使用WHERE和IN更新结合LOAD CSV的Neo4j中的属性?

来自分类Dev

Neo4j:如何使用datetime属性范围语句查询最近15分钟?

来自分类Dev

如何使用.Net neo4j客户端获取属性的sum()?

来自分类Dev

Cypher-如何使用“ STARTS WITH”查询多个Neo4j Node属性片段

来自分类Dev

没有有关如何使用neo4j管道的文档。在foreach中

来自分类Dev

如何使用Java api列出neo4j数据库中的所有标签?

来自分类Dev

如何在带有集合的neo4j中使用平均函数

来自分类Dev

如何使用Java Connector Jar在neo4j中获取所有节点的关系

来自分类Dev

neo4j如何使用Cypher返回所有节点标签?

来自分类Dev

如何在neo4j中读取node的属性?

来自分类Dev

如何检查neo4j中的数组属性?

来自分类Dev

如何检查neo4j中的数组属性?

来自分类Dev

如何在neo4j中删除map的属性?

来自分类Dev

使用REST API的Neo4j MERGE

来自分类Dev

如何对neo4j的集合值求和

来自分类Dev

Neo4j Design:何时使用属性进行关系

来自分类Dev

neo4j使用关系查找相关属性

来自分类Dev

使用 Neo4j Java API 属性容器

来自分类Dev

如何列出Neo4j中具有共同属性的所有节点

来自分类Dev

neo4j如何取消所有约束

来自分类Dev

neo4j:如何构造有效的查询?

来自分类Dev

如何删除具有重复属性的Neo4j节点?

来自分类Dev

如何避免在neo4j中多次访问具有相同属性的节点?

来自分类Dev

Neo4j和Java-如何求和所有属性值?

来自分类Dev

如何运行具有较大堆大小的Neo4j,指定-server并正确使用GC策略

Related 相关文章

  1. 1

    Neo4j/Cypher:如何排除/包含具有多个属性的节点?

  2. 2

    合并具有NULL属性Neo4j的节点

  3. 3

    Neo4j:如何匹配属性数组中具有公共值的节点

  4. 4

    如何在 Neo4j 中获取具有重复属性值的节点?

  5. 5

    如何使用WHERE和IN更新结合LOAD CSV的Neo4j中的属性?

  6. 6

    Neo4j:如何使用datetime属性范围语句查询最近15分钟?

  7. 7

    如何使用.Net neo4j客户端获取属性的sum()?

  8. 8

    Cypher-如何使用“ STARTS WITH”查询多个Neo4j Node属性片段

  9. 9

    没有有关如何使用neo4j管道的文档。在foreach中

  10. 10

    如何使用Java api列出neo4j数据库中的所有标签?

  11. 11

    如何在带有集合的neo4j中使用平均函数

  12. 12

    如何使用Java Connector Jar在neo4j中获取所有节点的关系

  13. 13

    neo4j如何使用Cypher返回所有节点标签?

  14. 14

    如何在neo4j中读取node的属性?

  15. 15

    如何检查neo4j中的数组属性?

  16. 16

    如何检查neo4j中的数组属性?

  17. 17

    如何在neo4j中删除map的属性?

  18. 18

    使用REST API的Neo4j MERGE

  19. 19

    如何对neo4j的集合值求和

  20. 20

    Neo4j Design:何时使用属性进行关系

  21. 21

    neo4j使用关系查找相关属性

  22. 22

    使用 Neo4j Java API 属性容器

  23. 23

    如何列出Neo4j中具有共同属性的所有节点

  24. 24

    neo4j如何取消所有约束

  25. 25

    neo4j:如何构造有效的查询?

  26. 26

    如何删除具有重复属性的Neo4j节点?

  27. 27

    如何避免在neo4j中多次访问具有相同属性的节点?

  28. 28

    Neo4j和Java-如何求和所有属性值?

  29. 29

    如何运行具有较大堆大小的Neo4j,指定-server并正确使用GC策略

热门标签

归档