有没有办法在密码查询中执行计算?

Is there a way to preform calculations in a cypher query?

有没有办法根据基于关系的计算值而不是标签来排序?作为参考,我有一个包含用户和技能的数据库。如果适用,每个用户节点都与技能节点有关系。每项技能都有与之相关的特定值,代表该技能的重要性。如果用户想找到相似的用户,我目前正在做的是匹配所有具有相似技能的不同用户。我想做的是总结我正在为特定用户寻找的每个技能节点中包含的值,并从大到小排序。例如,如果我正在寻找喜欢游泳 运行 的人,如果 Billy 喜欢游泳并且 运行 喜欢骑自行车,我会采用存储在每个类似技能中的值并将它们相加用作属性 作为排序依据。这在纯粹的密码中是否可能,或者我必须 return 结果列表然后 calculate/sort 在密码之外?如果有人对如何更好地构建数据库有任何其他建议,那也会有所帮助。

这在 Cypher 中非常简单,并且肯定在很多地方都有记录。

这里有几个例子:

根据相似的技能找到像 Bob 这样的用户,在技能节点上按技能重要性的总和排序:

MATCH (n:User {name: 'Bob'})-[:HAS_SKILL]->(skill)<-[:HAS_SKILL]-(otherUser)
RETURN otherUser.name AS name, sum(skill.score) AS score
ORDER BY score DESC

在一些图形模型中,每个用户可以为每个技能关联一个分数,在这种情况下,分数将取决于用户和技能之间的关系,然后你也可以总结这些:

MATCH (n:User {name: 'Bob'})-[r1:HAS_SKILL]->(skill)<-[r2:HAS_SKILL]-(otherUser)
RETURN otherUser.name AS name, sum(r1.score + r2.score) AS score
ORDER BY score DESC