不确定这是可能的,但会尝试询问。我试图找到共享至少5个(Action)节点的(Person)节点组,其中模型是
(p:PERSON)-[:CHAT]->(a:ACTION)
我可以这样做,以显示共享+5个动作的2个人组
MATCH path =(p1:PERSON)-[r1:CHAT]->(a:ACTION)<-[r2:CHAT]-(p2:PERSON)
WITH p1, p2, count(a) as ActionCount WHERE ActionCount >= 5
RETURN (p1)-[:CHAT]->(:ACTION)<-[:CHAT]-(p2)
然而,有一种聪明的方法可以动态地执行此操作,或者使用共享组中有更多人的集合吗?我正在尝试根据行动指标识别高效的团队,并在虚拟团队共享至少5个行动的情况下标记虚拟团队
非常感谢答案 0 :(得分:1)
所以我认为你可以通过编程生成查询来做到这一点。我不确定您是否可以在Cypher中以编程方式执行此操作。为了轻松生成查询,我会做类似的事情:
MATCH
(a:ACTION),
(a)<-[:CHAT]-(p1:PERSON),
(a)<-[:CHAT]-(p2:PERSON),
(a)<-[:CHAT]-(p3:PERSON),
(a)<-[:CHAT]-(p4:PERSON),
(a)<-[:CHAT]-(p5:PERSON)
WITH p1, p2, p3, p4, p5, count(a) as ActionCount
WHERE ActionCount >= 5
RETURN [p1, p2, p3, p4, p5], ActionCount
如果您以后不再使用path
和关系变量,那么您并不需要。
答案 1 :(得分:0)
我认为你这两种方式都说过(每个用户五个动作/每个动作五个用户)。它应该以相同的方式工作:
MATCH (p:PERSON)-[:CHAT]->(a:ACTION)
WITH p, count(a) AS action_count
WHERE action_count >= 5
MATCH (p)-[:CHAT]->(a:ACTION)
RETURN p, collect(a)
我刚刚在那里归还了什么。你应该能够归还任何你喜欢的东西。
另一种方法:
MATCH (p:PERSON)
WHERE size( (p)-[:CHAT]->(:ACTION) ) >= 5
WITH p
MATCH (p)-[:CHAT]->(a:ACTION)
RETURN p, collect(a)