2016-03-30 14 views
0

jqassistantで作成したグラフのクエリを検索しようとしています。しかし、私はそれを理解できません。私はそうサブ選択を含むNeo4j Cypherクエリ

 
projectOne 029 
projectTwo 010 

:二つのノードである私のクエリは返す必要がありますどのような(各行はノードである)

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

:私はアーティファクトを表す複数のノードを持つ

:私のデータは、このようになりますこのノードの最新バージョンを名前で区別します。私はDISTINCTとORDER BYを使う方法を知っていますが、希望の出力を得るためにこれらの2つをどのように組み合わせるかを理解できません。何か案は?

私の最終的な目標は、最新のバージョンをマークすることです。そして私は、最新のものとしてマークされていないアーティファクトに依存するすべての最新のアーティファクトを指摘したいと思います。

これに到達するもう1つの解決策は、先行するチェーンを作成することです。前任者がいないすべての成果物が最新バージョンになります。しかし、それは私が最新のものを選択するのと同じ問題を意味します。関連するすべてのノードがFooラベルを持っていると仮定すると

答えて

2

、クエリは非常に簡単です:

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

MAX集計関数は、各個別の名の最大バージョンを検索します。

+0

ああ。かなり簡単に見えます。私は今晩遅くそれを試し、それがうまくいくなら答えを記します。前もって感謝します。 – romixch

+0

ありがとう! – romixch

+0

すてきで簡単な解決策!これは、アーティファクトのバージョン属性が自然順序を作成する場合、つまり1.10.0のような別のバージョン管理スキームを使用すると、状況が壊れる可能性がある場合にのみ機能します。 –

関連する問題