networking - NEO4J - 根据最大值或最小值返回节点
问题描述
我使用以下命令构建了一个网络:
LOAD CSV WITH HEADERS FROM 'file:///trial.csv' AS row
MERGE(s:Person {id: row.Sender})
MERGE(r:Person {id: row.Receiver})
SET r.goodness = row.`goodness`
MERGE (s)-[hr:SENDS_TO]->(r)
SET hr.fairness = row.fairness
我想返回具有最高善良或公平关系的节点。我只能用这个:
MATCH (s:Person)
RETURN max(s.goodness)
返回最大的善良分数并用它来返回人,但它不起作用:
MATCH (s:Person)
WHERE s.goodness = max(s.goodness)
return s
知道我哪里出错了吗?
解决方案
您可能忘记将您的善良/公平转化为数字!有toInteger
或toFloat
是的,因为您正在进行聚合,这只能在投影(WITH 或 RETURN)中而不是在表达式中。你有两个选择:
MATCH (s:Person)
RETURN s
ORDER BY s.goodness DESC LIMIT 1
(如果您在 3.5 上并且在 s.goodness 上有一个索引并使用此语句,则可以从基于索引的排序中受益)。
MATCH (s:Person)
WHERE s.goodness > 0
RETURN s
ORDER BY s.goodness DESC LIMIT 1
或者您可以使用这种方法,它有点贵,而且还需要一个良好的索引才能运行良好。
MATCH (s:Person)
WITH max(s.goodness) as max
MATCH (s:Person) WHERE s.goodness = max
RETURN s
(可能会返回一个以上的人)
推荐阅读
- arduino - 我的串行超时功能在第一次调用时有效,但在第二次调用时无效
- java - 数组的 k 大小的相等排列数
- git - 合并两个 git 分支但排除合并文件中的特定行
- python-3.x - 如何在 VS Code 中正确导入 Python 模块?
- python-3.x - AttributeError:模块“innvestigate”没有属性“create_analyzer”
- python - 打印张量流矩阵 A.eval() 改变矩阵的转置值
- css - Bootstrap 4 - 容器流体不起作用
- c# - 读取列表成员值时动态获取类成员
- php - php curl -X GET 请求正文
- kubernetes - 无法获得作业 rke-network-plugin-deploy-job 的作业完成状态