如何在Cypher-Neo4j条件下获得不同的节点

时间:2014-02-26 07:52:31

标签: cypher neo4jphp node-neo4j neo4j

我是neo4j的新手,我有以下情况

如上图所示,我有一个节点Admin和节点Folder1, Folder2,Folder3以及其他一组节点,如FileA,FileB,FileC,FileD

  • Admin节点与属性:access的关系qty 对于Folder1,Folder2 and Folder3

  • 每个文件夹节点与各自的文件具有:next的关系 节点如上图所示。

问题:

如何编写Cypher查询以从具有最大FileA , FileB ,FileC,FileD值的这些文件夹节点返回不同 qty节点?

我试过了,但我无法得到它。

请帮助,提前致谢

2 个答案:

答案 0 :(得分:0)

高意味着什么?

试试这个:

MATCH (person:Person {name:"Admin"})-[r:access]->(folder)-[:next*]->(file)
WHERE r.qty > {high}
WITH file,r
ORDER r.qty DESC
RETURN distinct file

高是一个参数,例如{high:5}

答案 1 :(得分:0)

首先,使用http://console.neo4j.org/分享测试设置。

您想使用MAX聚合器。由于neo4j过滤的工作原理,设置有点奇怪。

MATCH (n)-[r:access]->()
// Reduce all items to one row, and get max quantity
WITH COLLECT(r) as r,  MAX(r.qty) as maxvalue
// Unwind collected values, and cleanup variables with WITH
UNWIND r as r2 
WITH r2 as r, maxvalue
// Filter rows on max
WHERE r.qty=maxvalue
// Do stuff
return *

或者,如果你有安装APOC的luxery

MATCH (n)-[r:access]->()
// get max value
WITH r,  apoc.coll.max(COLLECT(r.qty)) as maxvalue
// Filter rows on max
WHERE r.qty=maxvalue
// Do stuff
return *