neo4j - 多重关系,如连接表 (neo4j)

标签 neo4j

如何在 neo4j 中表达以下内容?

匹配或创建用户 bob;鲍勃在工作室工作;在工作室时,他可以涂鸦;在工作室时,他也可以打字。

这是我所拥有的:

MERGE (u:user {name:'bob'})
MERGE (c:company {name: 'studio'})
MERGE (u)-[:works_at]->(c)-[:allowed_to]->(p:permission {name:'doodle'})
MERGE (u)-[:works_at]->(c)-[:allowed_to]->(p:permission {name:'type'})

这不起作用,因为许可已成为公司关系。

此外,是否可以将关系链接起来:

MERGE work=(u)-[:works_at]->(c)
CREATE (work)-[:allowed_to]->(p:permission {name:'doodle'})
CREATE (work)-[:allowed_to]->(p:permission {name:'type'})

您在哪里为变量分配关系以便稍后在另一个查询中继续它?

最佳答案

如何建模以便公司授予许可?像这样的……

MERGE (u:user {name:'bob'})
MERGE (c:company {name: 'studio'})
MERGE (u)-[:works_at]->(c)
MERGE (u)-[:allowed_to]->(p1:permission {name:'doodle'})<-[:GRANTS]-(c)
MERGE (u)-[:allowed_to]->(p2:permission {name:'type'})<-[:GRANTS]-(c)
RETURN *

您不能真正通过您之前在其他查询中创建的标识符/变量来引用对象。您将不得不在新查询中重新匹配或合并那些先前创建的对象。

第 2 部分可以像这样建模..

MERGE (u:user {name:'bob'})
MERGE (c:company {name: 'studio'})
MERGE (u)-[:DOES]->(work:Work {start_date: timestamp()} )-[:AT]->(c)
CREATE (work)-[:allowed_to]->(p:permission {name:'doodle'})
CREATE (work)-[:allowed_to]->(p:permission {name:'type'})

关于neo4j - 多重关系,如连接表 (neo4j),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42728015/

相关文章:

ruby-on-rails - Neo4j多个neo4j实例

Neo4j 数字属性的正则表达式匹配

csv - neo4j 导入带有关系的 CSV

shell - neo4j csv 导入生命迹象

node.js - 在哪里使用 Neo4j

neo4j - 为什么配置文件查询向我显示 NodeByLabelScan 以获得在 neo4j 中具有唯一约束的属性?

python - neo4j 向具有相似属性的节点添加关系

python - 尝试从python连接到neo4j的AuthError

java - 遍历整个标签

database - 图数据库中的用户管理