2013-10-23 175 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

相關問題