首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >cypher/neo4j中的批节点关系创建

cypher/neo4j中的批节点关系创建
EN

Stack Overflow用户
提问于 2014-01-28 02:49:00
回答 2查看 843关注 0票数 0

什么是最有效的方式来分解这个创建密码查询?

结束模式如下:

代码语言:javascript
运行
复制
(newTerm:term)-[:HAS_META]->(metaNode:termMeta)

在这种模式中,这是一个newTerm节点和大约25个termMeta节点。HAS_META关系将有一个属性(languageCode),该属性对于每个termMeta节点将是不同的。

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

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

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

代码语言:javascript
运行
复制
 "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"}
        ]

但一次只能对一种类型的节点执行此操作,而且(据我所知)无法动态添加所需的关系属性。

任何洞察力都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-28 09:08:37

据我所知,没有真正优雅的方法可以做到这一点--从您的例子来看,我假设您使用的是参数。您可以使用foreach遍历这些参数并对每个参数进行创建,但这非常难看,需要您显式地指定属性的文字映射。下面是你的例子的样子:

代码语言:javascript
运行
复制
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之后删除所有内容。

票数 3
EN

Stack Overflow用户

发布于 2020-10-13 22:29:15

选择并命名每个顶点,然后使用它创建关系。对于ex

代码语言:javascript
运行
复制
match (n:Tag), (m:Account), (l:FOO) CREATE (n)-[r:mn]->(m),(m)-[x:ml]->(l)
代码语言:javascript
运行
复制
match (n:Tag{a:"a"}), (m:Account{b:"x"}), (l:FOO) CREATE (n)-[r:mn]->(m),(m)-[x:ml]->(l)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21395931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档