2016-03-06 41 views
-1

與此查詢:Neo4j的我怎麼可以探索探索多種關係noeud

MATCH (p)<-[:ProcheMer]-(:Camping)<-[:Dispo]-(d:Dispo)<-[:Dispo]-(:Camping)-[:AccesMer]->(a) 
WHERE d.debut="2016-06-25" AND d.duree=7 
return count (a) as a, count(p) as p 

我預計,p是>一,但結果是,A和P是相等的,爲什麼呢?當密碼達到最短路時停止密碼? 在一般情況下如何使多個關係與相同的查詢匹配多個統計信息?

+0

你爲什麼期望'p> a'?你匹配'p'和'a'之間的路徑,所以每條路徑都會包含其中的一條 - 計數總是相等的。你的意思是計算DISTINCT節點嗎?這是不是很清楚你在這裏問什麼。 –

+0

感謝您的評論。這是真的那裏有一些東西不清楚在我的腦海:) 我想做的ProcheMer關係的計數和在同一查詢AccesMer的計數。 我知道可以添加布爾proprities到露營節點,並做一個天真querty像: 匹配..與CASE當c.acccesMer = true然後1 else 0 as acccesMer,WITH CASE當c.procheMer = true然後1其他0作爲procheMer返回sum(procheMer)作爲procheMer,sum(acccesMer)as acccesMer 但我沒有找到一個明確的方式來做關係相同的事情。 –

+0

這聽起來像你只需要計數而不僅僅是計數 - 否則當他們參與兩個關係時計數節點兩次,計數總是相等的。 –

回答

0

也許我發現,我使用optionel匹配是這樣的:

MATCH(d:DISPO) - [分析輔助機構:DISPO] - >(C:露營)WHERE d.debut = 「2016年6月25日」 AND d.duree = 7可選MATCH(c) - [procheMer:ProcheMer] - >(p)可選MATCH(c) - [accesMer:AccesMer] - >()返回計數(procheMer),計數(accesMer)。

但我認爲這不是最好的優化,因爲選區匹配就像在SQL中的聯合(這是真的?),結果是比stats更慢,如何可以與postgres。還有其他方法嗎?