[英]Neo4J find the the number(SIZE) of relationships between nodes
我試圖返回一組節點,其中有超過n種相同類型的傳出關系。 為特定的用例提供了一組電影,其中演員為其中一部電影做出了貢獻。
我嘗試了COUNTing
和SIZE
多種方法,但無法弄清楚在Neo4J中這是否可能
MATCH (cw:CreativeWork) WHERE cw.officialTitle IN ['Antz', 'The Specialist ']
MATCH (p:Person) WHERE SIZE((p)-[:contributedTo]-(cw)) > 1
RETURN p, cw
這將根據:contributedTo
關系,返回指定的兩個Creative Works以及為該標題做出貢獻的所有人員。 名單中的兩個演員都為這兩個獎項做出了貢獻,而我有興趣歸還這兩個。
例如,此查詢不返回任何結果:
MATCH (cw:CreativeWork) WHERE cw.officialTitle IN ['Antz', 'The Specialist ']
MATCH (p:Person) WHERE SIZE((p)-[:contributedTo]-(cw)) > 1
RETURN p, cw
如果您的查詢值SIZE()
始終為0或1 (除非在Person
和CreativeWork
任何對之間存在兩個或多個關系)。 這樣做的原因是您的查詢匯總了Person
和CreativeWork
的SIZE
(或Count
)。(兩者均與Group by相同)
您可以使用以下查詢,該查詢為每個Person
COUNTS
CreativeWorks
(此查詢返回CreativeWork for Person的列表。):
MATCH (cw:CreativeWork) WHERE cw.officialTitle IN ['Antz', 'The Specialist']
MATCH (p:Person)-[:contributedTo]-(cw)
WITH p,count(cw) as rels, collect(cw) as cws
WHERE rels > 1
RETURN p,cws
您可以修改上面的查詢,使其看起來很簡單,如下所示(兩者執行相同):
MATCH (p:Person)-[:contributedTo]-(cw:CreativeWork)
WHERE cw.officialTitle IN ['Antz', 'The Specialist']
WITH p,count(cw) as rels, collect(cw) as cws
WHERE rels > 1
RETURN p,cws
注意:列表中最后一個標題的末尾有一個空格(在您的查詢中)。
@Raj的最后一個查詢可以簡化:
MATCH (p:Person)-[:contributedTo]-(cw:CreativeWork)
WHERE cw.officialTitle IN ['Antz', 'The Specialist']
WITH p, collect(cw) as cws
WHERE SIZE(cws) > 1
RETURN p, cws
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.