我正在尝试自己学习neo4j,我想问一下如何找到满足特定条件的所有节点。具体来说,假设我有一个图表,连接节点的唯一关系是关系:FOLLOWS
。
如何找到图表中至少 k
“粉丝”的所有节点?
如果我想找到具有完全 2个粉丝的所有节点,我会做
MATCH (a)-[:FOLLOWS]->(n), (b)-[:FOLLOWS]->(n)
RETURN n
无论哪种方式,当涉及到找到具有k
“粉丝”的所有节点时,上述方法似乎相当繁琐。
答案 0 :(得分:1)
您将在WHERE子句中使用谓词来添加限制,以缩小到您感兴趣的数据。
您可以使用SIZE()函数找到模式的出现次数。
此外,在节点上使用标签可以帮助加快查询速度。对于此示例,我将假设:Person是节点的标签。
MATCH (p:Person)
WHERE SIZE( (p)<-[:FOLLOWS]-(:Person) ) = 2
RETURN p
您可以使用不等式来满足您的“至少”条件。如果你有条件,你就可以将你的不等式链接起来:
MATCH (p:Person)
WHERE 5 < SIZE( (p)<-[:FOLLOWS]-(:Person) ) <= 10
RETURN p
将为您提供6到10个粉丝(包括6和10)的人。