基本上我想在各个节点之间进行排序并返回一个最新的,其属性为true ..但如果不存在true,我应该得到具有false属性的最新节点。
例如
nodeA - >拥有重命名值的属性为 true
nodeB - >财产重命名值为 false
现在的情况是,可能有n个节点的属性重命名为 true 和 false ,我想要最新的一个(节点还具有以毫秒格式表示的时间属性,如果不是真,则属性为true,然后是最新的false。
有没有办法用cypher查询来实现这个目的? 感谢
答案 0 :(得分:1)
如果我正确理解了您的问题,您需要具有属性的最新节点"重命名" " true"的值,然后您可以先按属性排序节点"重命名"然后属性"时间"按降序排列,并取第一个,
Match somenode:Something
Return somenode
Order by somenode.renamed DESC, somenode.time DESC
limit 1
如果有属性的节点"重命名" " true"的值,那么第一个必须是所有节点中最新的一个,其值为" true&#34 ;;如果没有值为" true"的节点,则第一个节点必须是所有节点中的最新节点,其值为" false"。
答案 1 :(得分:-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