我有两种类型的节点:投资者和创业公司
我想创建一个查询,而用户可以给出,说,3作为输入,只有投资者与至少3个不同的创业公司的关系将返回。此解决方案将用于neo4j Bloom
我的尝试:
MATCH p = (s1:Startup)<-[r:INVESTOR_INVESTED_IN]-(i:Investor)-[r2:INVESTOR_INVESTED_IN]->(s2:Startup)
WHERE id(s1) in $nodes AND id(s2) in $nodes AND s1<>s2
RETURN p
通过我上面的尝试,如何从最小2改变为最小4并不明显
找到所有投资过一家初创公司的投资者,并检查集合中初创公司的数量。如果你想返回路径,那么你需要像下面这样返回路径:
MATCH (i:Investor)-[:INVESTOR_INVESTED_IN]-> (s:Startup)
WITH i, collect(distinct s) as startup WHERE size(startup) >= 3
MATCH p = (i)-[:INVESTOR_INVESTED_IN]-> (:Startup)
RETURN p
但如果您只对显示投资者感兴趣,查询将更简单,如下所示:
MATCH (i:Investor)-[:INVESTOR_INVESTED_IN]-> (s:Startup)
WITH i, collect(distinct s) as startup WHERE size(startup) >= 3
RETURN i