基本上我想在各个节点之间进行排序并返回一个最新的属性为true的属性..但如果true不存在,我应该得到具有false属性的最新节点。例如
nodeA上 - >其财产改名值真
节点B - >其财产更名为值假根据neo4j中的属性值对节点进行排序
现在的情况是,有可能是节点的n个与财产更名为为真和假,我想只是最新的一个(节点也具有以毫秒为单位的时间属性),如果属性为true则返回true,则返回false。
有没有什么办法可以用密码查询来实现这个功能? 谢谢
基本上我想在各个节点之间进行排序并返回一个最新的属性为true的属性..但如果true不存在,我应该得到具有false属性的最新节点。例如
nodeA上 - >其财产改名值真
节点B - >其财产更名为值假根据neo4j中的属性值对节点进行排序
现在的情况是,有可能是节点的n个与财产更名为为真和假,我想只是最新的一个(节点也具有以毫秒为单位的时间属性),如果属性为true则返回true,则返回false。
有没有什么办法可以用密码查询来实现这个功能? 谢谢
如果我正确理解你的问题,你想要最新的节点的属性“重命名”值为“真”,那么你可以先排序节点的属性“重命名”,然后属性“时间”降序排列,并占据第一位,
Match somenode:Something
Return somenode
Order by somenode.renamed DESC, somenode.time DESC
limit 1
如果有与“更名为”属性节点的“真”,那么第一个必须与价值的所有节点的最新一期“真值“;如果没有值为“true”的节点,那么第一个节点必须是所有节点中值为“false”的最新节点。
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