我是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
请就此问题的可能解决方案提出建议。
答案 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