在neo4j中找到连接到任何特定节点的最大权重边
find maximum weight edge connected to any specific node in neo4j
MATCH (d:domain)
WITH COLLECT(d) AS domains
UNWIND domains AS d1
UNWIND domains AS d2
WITH d1,d2
WHERE id(d1) < id(d2) and d1.name='google'
MATCH (d1)-[r:domain_join]-(d2)
//where r.weight is max // I want something like this (I am stuck at this line)
return d1.name,d2.name,r.weight;
我得到的输出是
我想要的输出是具有最大权重的单行
你应该可以做到:
return d1.name,d2.name,r.weight
ORDER BY r.weight DESC LIMIT 1;
我怀疑您可以简化您的查询(特别是如果您的域节点的名称 属性 上有一个索引)。顺便说一下,标签通常以大写字母开头,关系类型都是大写的。
MATCH (google:domain {name: 'google'})
MATCH (google)-[r:domain_join]-(d2:domain)
RETURN d2.name, r.weight
ORDER BY r.weight DESC LIMIT 1
MATCH (d:domain)
WITH COLLECT(d) AS domains
UNWIND domains AS d1
UNWIND domains AS d2
WITH d1,d2
WHERE id(d1) < id(d2) and d1.name='google'
MATCH (d1)-[r:domain_join]-(d2)
//where r.weight is max // I want something like this (I am stuck at this line)
return d1.name,d2.name,r.weight;
我得到的输出是
我想要的输出是具有最大权重的单行
你应该可以做到:
return d1.name,d2.name,r.weight
ORDER BY r.weight DESC LIMIT 1;
我怀疑您可以简化您的查询(特别是如果您的域节点的名称 属性 上有一个索引)。顺便说一下,标签通常以大写字母开头,关系类型都是大写的。
MATCH (google:domain {name: 'google'})
MATCH (google)-[r:domain_join]-(d2:domain)
RETURN d2.name, r.weight
ORDER BY r.weight DESC LIMIT 1