如何在 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/