Neo4j 交叉路口
具有以下模式:Neo4j 交叉路口,neo4j,cypher,Neo4j,Cypher,具有以下模式: (A{id})-[:C]>(B) 我需要: (A{id:1})∩ (A{id:2})∩ (A{id:3})=>G1 (A{id:4})∩ (A{id:5})∩ (A{id:6})=>G2 G1∩ G2 第三步不是问题,但我在第1步和第2步遇到了问题,因为组可以由最多30个类型为a和的元素组成 MATCH (v:A{id: 1})-[:C]->(b:B)<-[:C]-(as:A) WHERE as.id in [1,2,3] RETURN count(distinct
(A{id})-[:C]>(B)
我需要:
MATCH (v:A{id: 1})-[:C]->(b:B)<-[:C]-(as:A)
WHERE as.id in [1,2,3]
RETURN count(distinct b)
MATCH(v:A{id:1})-[:C]>(b:b)您可能想在上查看这篇neo4j知识库文章
本文中有几种方法可以做到这一点。将第一种方法应用于您的问题,这将为您提供集合中所有:A节点均可访问的:B节点的交点:
WITH [1,2,3] as ids
MATCH (a:A)-[:C]->(b:B)
WHERE a.id in ids
WITH b, size(ids) as inputCnt, count(DISTINCT a) as cnt
WHERE cnt = inputCnt
RETURN b
我不太明白上面1和2中的操作与下面引用的查询之间的关系。另外,如果id是:a节点的唯一标识符,那么count(distinct v)
将始终为1。你能详细说明一下你希望查询做什么吗?对不起,发布了错误的查询。我希望现在它更清楚了。基本上,从相交处获得两个集合,第三步是相交这些集合