【发布时间】:2017-09-03 00:17:35
【问题描述】:
场景:
graph image
John doe 对 2 种成分进行了评级,其中 2 种恰好属于汤配方,只有 1 种属于比萨饼。查询应返回汤配方,因为这些成分评分的平均值 > 5
我有什么: 我从以下查询开始:
匹配(:主题{参考: 1})-[ir:INGREDIENT_RATING]->(:Ingredient) 5 返回 r;
我希望发生的事情: 这将返回一种成分评分高于 5 的食谱,但这并未考虑该食谱的其他成分可能具有该用户给出的较低评分。
所以我必须扩展上面的查询,但我有点不知道从哪里开始。
提前致谢,
更新 1: 基于@InverseFalcon 我想出了这个,这给了我期望的结果:
MATCH (:Subject {ref: '1'})-[ir:INGREDIENT_RATING]->(i:Ingredient)-[:HAS_INGREDIENT]-(r:Recipe)-[:KITCHEN]->(k:Kitchen )
MATCH (r)-[HAS_INGREDIENT]-(in:Ingredient)
WITH r, k, in, sum(ir.value) AS sum
哪里总和 > 10
RETURN DISTINCT r,collect(DISTINCT in) AS 配料,k AS 厨房,sum
ORDER BY sum DESC
第二个匹配是因为没有它,它只返回带有评级的成分,我需要所有它们。
只有一个奇怪的地方,那就是我得到一个重复的结果,即使我在 r 上使用 distinct。
【问题讨论】:
-
我不确定你在问什么。请提供一些数据示例以及您期望返回的内容。
-
@betseyb 我用图像和更好的描述更新了场景。希望能更好地理解我试图完成的工作。