2013-10-23 130 views
0

基本上我想在各个节点之间进行排序并返回一个最新的属性为true的属性..但如果true不存在,我应该得到具有false属性的最新节点。例如

nodeA上 - >其财产改名
节点B - >其财产更名为根据neo4j中的属性值对节点进行排序

现在的情况是,有可能是节点的n个与财产更名为,我想只是最新的一个(节点也具有以毫秒为单位的时间属性),如果属性为true则返回true,则返回false。

有没有什么办法可以用密码查询来实现这个功能? 谢谢

回答

1

如果我正确理解你的问题,你想要最新的节点的属性“重命名”值为“真”,那么你可以先排序节点的属性“重命名”,然后属性“时间”降序排列,并占据第一位,

Match somenode:Something 
Return somenode 
Order by somenode.renamed DESC, somenode.time DESC 
limit 1 

如果有与“更名为”属性节点的“真”,那么第一个必须与价值的所有节点的最新一期“真值“;如果没有值为“true”的节点,那么第一个节点必须是所有节点中值为“false”的最新节点。

-1
START a=node(*) 
MATCH p=a-[*1..]->b 
WHERE ALL (x IN nodes(p) 
      WHERE x.renamed=true OR (id(x)=id(b) AND x.renamed=false)) 
RETURN p 

除了最后一个b所有节点都必须有renamed=false,最后一个b必须renamed=false

相关问题