Neo4j 密码查询以查找具有某些关系但不具有其他关系的节点
类似于,但不同到目前为止足以让我难堪 如果一个人符合语言要求,并且与任务没有关系(例如,完成或拒绝),那么他有资格完成任务 任务可以相互依赖,并通过0或更多的Neo4j 密码查询以查找具有某些关系但不具有其他关系的节点,neo4j,cypher,Neo4j,Cypher,类似于,但不同到目前为止足以让我难堪 如果一个人符合语言要求,并且与任务没有关系(例如,完成或拒绝),那么他有资格完成任务 任务可以相互依赖,并通过0或更多的依赖于rels和'root'任务的要求来“继承”其语言 我正在尝试创建一个查询,该查询将发现 p1符合t2和t4 p2适用于所有4个 p3不符合任何 我甚至不担心t1的完蛋,我认为我还没有通过语言“继承” 例如,对于p2: MATCH(p:Person{name:'p2'})-[:SPEAKS]->(lang) 使用p,将(lang)
依赖于
rels和'root'任务的要求
来“继承”其语言
我正在尝试创建一个查询,该查询将发现
符合p1
和t2
t4
适用于所有4个p2
不符合任何p3
p2
:
MATCH(p:Person{name:'p2'})-[:SPEAKS]->(lang)
使用p,将(lang)收集为langs
匹配(t:Task)-[:依赖于*0]->(:Task)-[:REQUIRES]->(lang:Language)
朗在哪里
返回t
查找0行
MATCH(p:Person{name:'p2'})-[:SPEAKS]->(lang)
回廊
获取两种语言,因此我(相当?)确信collect(lang)as langs
是我想要的
删除:取决于*
链接
MATCH(p:Person{name:'p2'})-[:SPEAKS]->(lang)
使用p,将(lang)收集为langs
匹配(t:Task)-[:REQUIRES]->(lang:Language)
朗在哪里
返回t
获取我的t1
、t2
和t3
我怎样才能获得t4
蒂亚 您可以更灵活地遍历路径。通过共享语言节点查找从人员到任务的路径是一种路径模式,即使路径的不同实例可以通过不同的语言进行路由。然后可以使用0+可变长度路径对其进行扩展,以查找依赖于给定任务的任务。最后,过滤掉任务与使用其中一个无效任务的人相关的任何路径。关系
MATCH (p:Person) - [:SPEAKS] -> (:Language) <- [:REQUIRES] - (:Task) <- [:DEPENDS_ON*0..] - (t:Task)
WHERE NOT (t) <- [:IS_DOING|:REJECTED] - (p)
RETURN p, COLLECT(DISTINCT t)
MATCH(p:Person)-[:SPEAKS]->(:Language)您可以更灵活地遍历路径。通过共享语言节点查找从人员到任务的路径是一种路径模式,即使路径的不同实例可以通过不同的语言进行路由。然后可以使用0+可变长度路径对其进行扩展,以查找依赖于给定任务的任务。最后,过滤掉任务与使用其中一个无效任务的人相关的任何路径。关系
MATCH (p:Person) - [:SPEAKS] -> (:Language) <- [:REQUIRES] - (:Task) <- [:DEPENDS_ON*0..] - (t:Task)
WHERE NOT (t) <- [:IS_DOING|:REJECTED] - (p)
RETURN p, COLLECT(DISTINCT t)
MATCH(p:Person)-[:SPEAKS]->(:语言)