networking - NEO4J - 基于最大值或最小值返回节点

标签 networking graph neo4j cypher

我使用以下命令构建了一个网络:

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

知道我哪里出了问题吗?

最佳答案

你可能忘记了把你的善良/公平转化为数字!与 toIntegertoFloat

是的,因为您正在进行的聚合只能在投影(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

(可能会返回多个人)

关于networking - NEO4J - 基于最大值或最小值返回节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54969071/

相关文章:

java - 在linux VM和raspberry pi之间查找不同数量的网络节点

javascript - 使用 NodeJS 检测用户是否正在访问我的网络(WIFI)

生成随机网络的算法

wpf - WPF 的 MVVM 模式 - 再次绘制 2d 图

java - 如何将这种图存储在 neo4j 中以便快速遍历?

java - neo4j-jdbc 驱动程序最小可行片段,不确定如何解决依赖关系

http - HTTP/HTTPS 可以使用 UDP 吗?

java - 套接字流的 flush() 有多可靠?

c - C 中的图结构

neo4j - 在节点 Cypher 上添加临时属性