簡體   English   中英

Neo4J找到了獨特的結果

[英]Neo4J find unique results

我有一個圖表顯示公司之間的財務關系 - 欠款關系,公司欠公司的錢。 我尋求一種獨特的關系 - 圈子,后者是封閉的。所以,如果我欠你的錢,我們發現你欠我的錢,我關閉債務。 這些公司按稅號確定。 為此,我使用此Cypher查詢:

start n=node(*) 
match p=n-[r:OWES*1..200]->n 
where HAS(n.taxnumber) 
return  extract(s in relationships(p) : s.amount), 
        extract(t in nodes(p) : ID(t)), 
        length(p) ;

但我也得到了結果

Company1-Company2-company1-Company-3

我在我的java應用程序中顯示了這個結果。 在我用java代碼解析它們之后,我是否應該隱藏這個結果 - 一個公司被顯示兩次的結果。 這在邏輯方面很好,但我需要一個公司只展示一次的結果,我不想要多次獲得同一公司的結果。 如何修改我的Cypher查詢? 我想要的是結果中的公司只能在結果的開頭和結尾處,而不是以某種方式在中間盤旋。

您可以嘗試檢查路徑節點以不包含起始節點。

start n=node(*) 
match p=n-[:OWES*1..200]->(m), (m)-[r:OWES]->n 
where HAS(n.taxnumber) 

AND NOT(n IN tail(nodes(p)))

return  extract(s in relationships(p) : s.amount) + r.amount, 
        extract(t in nodes(p) : ID(t)) + ID(n), 
        length(p) + 1;

遺憾的是1.8.2中沒有下標,只有tail(coll)沒有簡單的方法可以從檢查中排除最后一個元素。 這就是為什么我必須分解p並在最后修復你的聚合。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM