gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 09:20:51 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com