针对决策树和专家系统的Neo4J堆叠查询

时间:2017-07-05 21:19:42

标签: neo4j cypher nosql

我是Neo4J的新手,在没有额外的外部处理的情况下努力获得我需要的输出。我很确定Neo4J很容易做到这一点。请告知最佳方法。

我有两种类型的节点:使用具有{Weight:1}属性的关系连接的成分和函数。我正在查询成分列表,我想得到一个连接总和乘以每个连接的权重导致每个不同的函数。

这就是我想出来的。

MATCH (q:Ingredient)-[r]->(p) WHERE q.RefNo IN [1,2,3]  RETURN r,p

这会产生以下输出

{"weight":1}│{"Function":"X1"}                                                    
{"weight":0.5}│{"Function":"X1"}                                                                
{"weight":0.7}│{"Function":"X2"}
{"weight":0.4}│{"Function":"X3"}
{"weight":0.5}│{"Function":"X4"}

我想在单个/堆叠查询中获得的是

X1:1.5, X2:1=0.7, X3:0.4, X4:0.5

请就此问题的可能解决方案提出建议。

1 个答案:

答案 0 :(得分:0)

几乎在那里,您只需要对权重使用聚合函数(在本例中为sum()),并将Function属性用作非聚合列:

MATCH (q:Ingredient)-[r]->(p) 
WHERE q.RefNo IN [1,2,3]  
RETURN p.Function, sum(r.weight) as weight

或者,如果您只想要一行结果:

MATCH (q:Ingredient)-[r]->(p) 
WHERE q.RefNo IN [1,2,3]  
WITH p, sum(r.weight) as weight
RETURN collect(p {.Function, weight}) as functionWeights