2016-03-30 162 views
0

我想查找我的圖形,我通過jqassistant創建一個查詢。但我無法弄清楚。我的數據是這樣的:Neo4j Cypher查詢與子選擇

我有幾個節點代表一個神器:(每行是一個節點)

 
name  version 
=================== 
projectOne  001 
projectTwo  001 
projectOne  002 
projectTwo  002 
projectOne  009 
projectOne  004 
projectOne  029 
projectTwo  003 
projectTwo  010 

什麼我的查詢應該返回是兩個節點:

 
projectOne 029 
projectTwo 010 

所以我希望這個節點的最新版本不同於名稱。我知道如何使用DISTINCT和ORDER BY,但我無法弄清楚如何組合這兩個來獲得所需的輸出。有任何想法嗎?

我的最終目標是標記最新版本。然後我想指出每一個最新的神器,它依賴於未被標記爲最新的神器。

達成此目的的另一個可能的解決方案是創建一系列前輩。那麼沒有傳入前輩的每件神器都將是最新版本。但這意味着我選擇最新的問題時會遇到同樣的問題。

回答

2

假設所有相關節點具有Foo標籤,查詢很簡單:

MATCH (n:Foo) 
RETURN n.name, MAX(n.version); 

MAX聚合函數查找每個不同名稱的最高版本。

+0

哦。看起來很容易。我會在今晚晚些時候嘗試一下,如果有效,請給出答案。提前致謝。 – romixch

+0

Awsome!謝謝! – romixch

+0

好的和簡單的解決方案!請注意,這隻適用於工件的版本屬性創建自然順序的情況,即如果使用其他版本控制方案(如1.10.0),那麼事情可能會中斷。 –