当前位置: 首页 > 知识库问答 >
问题:

使用Cypher向现有节点添加关系

董琦
2023-03-14

我第一次试用Neo4j。我正在使用2.0-RC1社区版。

我已经创建了一些节点:

MERGE (u:User{username:'admin',password:'admin'})
MERGE (r1:Role{name:'ROLE_ADMIN'})
MERGE (r2:Role{name:'ROLE_WEB_USER'})
MERGE (r3:Role{name:'ROLE_REST_USER'})

现在我想在节点之间添加关系。但是,我不想清除使用上面的脚本创建的现有数据库,添加语句并再次运行它。我想向现有节点添加关系。谷歌帮我找到了这个:

START n=node(*), m=node(*)  
where has(n.username) and has(m.name) and n.username = 'admin' 
and m.name = 'ROLE_WEB_USER' 
create (n)-[:HAS_ROLE]->(m)

这工作得很好(尽管我不理解所有的语法)。但是,我知道这将查找具有用户名属性的任何节点和具有名称属性的任何节点,而不是使用标签来检查它是否具有正确类型的节点。

如何使用标签进行同样的操作?

共有2个答案

益绯辞
2023-03-14

从2020年4月起更新:
新的密码语法如下。由于“在上创建索引”已被弃用,is。。

CREATE INDEX FOR (n:Label) ON (n.property)
韩良策
2023-03-14

在Neo4j 2.0中,可以为标签和用于查找的属性创建模式索引:

CREATE INDEX ON :User(username)
CREATE INDEX ON :Role(name)

要创建关系,您可以使用:

MATCH (u:User {username:'admin'}), (r:Role {name:'ROLE_WEB_USER'})
CREATE (u)-[:HAS_ROLE]->(r)

如果可能,MATCH将使用索引。如果没有索引,它将查找所有携带标签的节点,并查看属性是否匹配。

注意:上面的语法只适用于Neo4j 2.0.0-RC1及以上版本。

 类似资料:
  • 我需要在XML中保留很少的值,并且需要通过XSLT添加新的节点。 价值需要保留,新的选项需要添加。 如何实现这一点。下面是我的代码。 有人能帮忙吗? 谢谢

  • 我当前有一个查询,用于在Men节点和People节点之间建立关系: Mem节点包含一个personid数组,我正在展开该数组,然后将其与personid节点对应。但是,查询正在与它创建的新Person节点建立关系,只使用相应的PersonId属性(而不使用其他属性),而不是与具有相应PersonId的现有Person节点建立关系。 即使我对带有Person标签的节点的personID属性有一个唯一

  • 问题内容: 我想向现有的xml节点添加属性。我不想向xml文件添加新元素(新节点),我只想添加新属性。我怎样才能做到这一点? 特别是我尝试了以下代码行: 但是我得到以下异常: 问题答案: 在DOM解析器中,这非常容易。获取您的节点,只需使用此功能。 然后最后更新您的文档。像这样..

  • 在cypher中是否可以使用导入功能根据csv的值在节点之间创建不同的关系。 可能有简单的方法做这件事。但我在网上没有得到任何参考资料。谢了。

  • 我正在将XML返回到一个jsp页面。 最终的XML结构如下所示: 的根节点作为向量返回,我使用xtream将其别名为“tasks”,如上图所示。 如何使用XStream实现这一点?我需要使用XSLT文件来转换XML输出吗?完成这一点的最佳方法是什么?

  • 你能告诉我,我应该在哪里声明节点的事件侦听器,它们是在我的控制器类之外添加的? 最好的方法是用这个例子来解释: 我有我的控制器: 然后我有任务,它在初始化方法中启动: 我在这里做什么?我有一个FXML,根元素是锚烷。它具有id根。现在我开始了一个任务,在这个任务中,我向根节点添加了一个按钮。现在我想向按钮注册一个动作事件。我现在的问题是,我可以/应该在哪里注册听众。通常我在控制器中注册它们,但在这