neo4j - 是否可以使用数据驱动的节点或关系标签进行合并?

标签 neo4j cypher graph-databases

我正在通过 Neo4J JDBC 驱动程序使用准备好的语句,并且需要创建节点和关系标签,其名称由我们将接收的数据驱动。

例如,我想按照以下方式创建一个准备好的语句:

合并(测试:{1} {id:{2})创建集 test.id = {2}

或者

MERGE (测试:测试)-[:{1}]->(test2:测试)

这些目前不起作用,因为 Neo4J 似乎不会将占位符 {1} 解释为占位符,而是将其视为无效的标签名称。

我正在探索的另一种可能性是我们可以通过存储过程扩展 Cypher,尽管我怀疑我们可能会遇到相同的限制。

希望有人能够提供一些见解,看看是否有任何方法可以使用 Cypher 来实现这一目标。

谢谢!

更新:

下面的答案建议使用 APOC 的 apoc.create.node 过程,但我需要的是合并动态标签。更新了标题以反射(reflect)这一点。

最佳答案

我最终使用了与 APOC 不同的过程 - apoc.cypher.doIt,因为事实证明 APOC 到目前为止还没有办法与动态标签合并。请参阅功能请求:https://github.com/neo4j-contrib/neo4j-apoc-procedures/issues/271

以下是我最终所做的事情。请注意,要求是迭代(在本例中使用 UNWIND)集合并合并具有从该集合中提取的动态标签的节点,然后合并预先存在的节点和此新节点之间的关系:

WITH myNode, myList
UNWIND categories AS catArray
WITH myNode, 'MERGE (cat:' + catArray[0] + ' {value: "' + catArray[1] + '" }) ON CREATE SET cat.value = \"' + catArray[1] + '\" RETURN cat' AS cypher
CALL apoc.cypher.doIt(cypher, {}) YIELD value
WITH myNode, value.cat as cat
MERGE (myNode)-[:IN_CATEGORY]->(cat)

关于neo4j - 是否可以使用数据驱动的节点或关系标签进行合并?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43740000/

相关文章:

spring-boot - 明确定义RelationshipEntity后,别忘了更改模型吗?

Neo4j:匹配多个目标节点

json - 密码查询JSON格式的结果

neo4j - 如何计算Neo4j中的关系数

java - 使用带有属性映射的 Cypher CREATE 命令,来自 Java

nosql - Orientdb 版本之间有什么区别?

Neo4j Cypher - 删除给定索引处的数组属性

neo4j - 这个概念适用于图数据库吗?

neo4j - 领域驱动设计与图数据库

spring-data-neo4j v6 : No converter found capable of converting from type [MyDTO] to type [org. neo4j.driver.Value]