2016-03-06 52 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。还有其他方法吗?