Database 在cypher/neo4j中创建批处理节点关系

Database 在cypher/neo4j中创建批处理节点关系,database,neo4j,cypher,Database,Neo4j,Cypher,分解这个CREATE cypher查询最有效的方法是什么 结束模式如下所示: (newTerm:term)-[:HAS_META]->(metaNode:termMeta) 在这种模式中,这是一个newTerm节点和大约25个term元节点。HAS_元关系将具有单个属性(languageCode),每个termMeta节点的属性将不同 在应用程序中,将同时创建所有这些节点和关系。我正在尝试确定添加它们的最佳方式 是否可以添加这些,而不必对每个TermMeta节点执行单独的查询? 我知道您

分解这个CREATE cypher查询最有效的方法是什么

结束模式如下所示:

(newTerm:term)-[:HAS_META]->(metaNode:termMeta)
在这种模式中,这是一个newTerm节点和大约25个term元节点。HAS_元关系将具有单个属性(languageCode),每个termMeta节点的属性将不同

在应用程序中,将同时创建所有这些节点和关系。我正在尝试确定添加它们的最佳方式

是否可以添加这些,而不必对每个TermMeta节点执行单独的查询?

我知道您可以使用以下查询格式添加节点的多个实例:

 "metaProps" : [ 
            {"languageCode" : "en", "name" : "1", "dateAdded": "someDate1"}, 
            {"languageCode" : "de", "name" : "2", "dateAdded": "someDate2"},
            {"languageCode" : "es", "name" : "3", "dateAdded": "someDate3"}, 
            {"languageCode" : "fr", "name" : "3", "dateAdded": "someDate4"}
        ]
但一次只能对一种类型的节点执行此操作,而且(据我所知)无法动态添加所需的关系属性


如果您有任何见解,我们将不胜感激。

没有真正优雅的方法可以做到这一点,从您的示例中我可以看出,我假设您使用的是参数。您可以使用foreach循环遍历参数并对每个参数进行创建,但这非常难看,需要您显式指定属性的文字映射。以下是您的示例的外观:

CREATE (newTerm:term)
FOREACH ( props IN {metaProps} | 
  CREATE newTerm-[:HAS_META {languageCode: props.languageCode}]->
           (:termMeta {name: props.name, dateAdded: props.dateAdded})
)
WITH newTerm
MATCH newTerm-[rel:HAS_META]->(metaNode:termMeta)
RETURN newTerm, rel, metaNode

如果您不需要返回结果,可以在
FOREACH

之后删除所有内容。从您的示例中可以看出,没有真正优雅的方法可以做到这一点,我假设您使用的是参数。您可以使用foreach循环遍历参数并对每个参数进行创建,但这非常难看,需要您显式指定属性的文字映射。以下是您的示例的外观:

CREATE (newTerm:term)
FOREACH ( props IN {metaProps} | 
  CREATE newTerm-[:HAS_META {languageCode: props.languageCode}]->
           (:termMeta {name: props.name, dateAdded: props.dateAdded})
)
WITH newTerm
MATCH newTerm-[rel:HAS_META]->(metaNode:termMeta)
RETURN newTerm, rel, metaNode

如果您不需要返回结果,可以在
FOREACH

之后删除所有内容。从您的示例中可以看出,没有真正优雅的方法可以做到这一点,我假设您使用的是参数。您可以使用foreach循环遍历参数并对每个参数进行创建,但这非常难看,需要您显式指定属性的文字映射。以下是您的示例的外观:

CREATE (newTerm:term)
FOREACH ( props IN {metaProps} | 
  CREATE newTerm-[:HAS_META {languageCode: props.languageCode}]->
           (:termMeta {name: props.name, dateAdded: props.dateAdded})
)
WITH newTerm
MATCH newTerm-[rel:HAS_META]->(metaNode:termMeta)
RETURN newTerm, rel, metaNode

如果您不需要返回结果,可以在
FOREACH

之后删除所有内容。从您的示例中可以看出,没有真正优雅的方法可以做到这一点,我假设您使用的是参数。您可以使用foreach循环遍历参数并对每个参数进行创建,但这非常难看,需要您显式指定属性的文字映射。以下是您的示例的外观:

CREATE (newTerm:term)
FOREACH ( props IN {metaProps} | 
  CREATE newTerm-[:HAS_META {languageCode: props.languageCode}]->
           (:termMeta {name: props.name, dateAdded: props.dateAdded})
)
WITH newTerm
MATCH newTerm-[rel:HAS_META]->(metaNode:termMeta)
RETURN newTerm, rel, metaNode

如果不需要返回结果,可以删除
FOREACH

之后的所有内容,选择每个顶点并以不同的方式命名,然后使用它创建关系。 前


选择每个顶点并以不同的方式命名,然后使用它创建关系。 前


选择每个顶点并以不同的方式命名,然后使用它创建关系。 前


选择每个顶点并以不同的方式命名,然后使用它创建关系。 前


谢谢你,乔恩。我看到FOREACH存在,但不知道您可以在属性上使用它。谢谢Jon。我看到FOREACH存在,但不知道您可以在属性上使用它。谢谢Jon。我看到FOREACH存在,但不知道您可以在属性上使用它。谢谢Jon。我看到FOREACH存在,但不知道您可以在属性上使用它。