Graph Neo4j Cypher查询:查找连接到具有3个以上其他关系的节点的所有节点

Graph Neo4j Cypher查询:查找连接到具有3个以上其他关系的节点的所有节点,graph,neo4j,cypher,Graph,Neo4j,Cypher,我的密码查询有问题。我有一些节点称为:句子,还有一些节点称为:WORD:句子节点与:包含到:WORD节点之间的关系 我想查找连接到:WORD节点的:句子节点,这些节点从3个以上的:句子节点使用。所有:WORD节点都必须符合此标准 我试过这样的方法: MATCH p=(s1:SENTENCE)-[:CONTAINS]-(w:WORD)-[:CONTAINS]-(s2:SENTENCE) WITH s1,w, COUNT(s2) as num WHERE num > 3 RETURN s

我的密码查询有问题。我有一些节点称为
:句子
,还有一些节点称为
:WORD
<代码>:句子
节点与
:包含
:WORD
节点之间的关系

我想查找连接到
:WORD
节点的
:句子
节点,这些节点从3个以上的
:句子
节点使用。所有
:WORD
节点都必须符合此标准

我试过这样的方法:

MATCH p=(s1:SENTENCE)-[:CONTAINS]-(w:WORD)-[:CONTAINS]-(s2:SENTENCE)
WITH s1,w, COUNT(s2) as num 
WHERE num > 3  
RETURN s1
LIMIT 25
但是结果包含
:句子
节点,其中一个而不是所有
:WORD
节点的度数最小为3

其他一些尝试:

MATCH p=(s1:SENTENCE)-[:CONTAINS]-(w:WORD)-[:CONTAINS]-(s2:SENTENCE)
WHERE SIZE((:SENTENCE)-[:CONTAINS]-(w:WORD)) > 3 
RETURN s1
LIMIT 25
但这不适用于包含在句子中的任何
:WORD
节点。它只适用于1年


所以我的问题是:我怎样才能使条件适用于所有节点,而不仅仅适用于一个节点

这种需求通常需要收集节点,并使用
all()
函数来确保某些谓词对集合的所有元素都适用:

MATCH (s1:SENTENCE)-[:CONTAINS]-(w:WORD)
WITH s1, collect(w) as words
WHERE all(word in words WHERE size((word)-[:CONTAINS]-()) > 3)
RETURN s1
LIMIT 25