3

jQAssistant を使用して、Neo4j データベースに Java アーティファクトに関する情報を入力しました。

今、いくつかの条件を満たすアーティファクトの最新バージョンを見つけたいと思っています。一見するmax(a.version)と、アーティファクトのバージョン プロパティで使用できます。ただし、アーティファクトのバージョンは通常の文字列順ではなく、実際には 1.10.0 が 1.2.0 より新しいバージョンです。

上記のようなカスタム順序付けスキームを実装または使用するにはどうすればよいですか?

4

2 に答える 2

2

バージョン番号 (メジャー、マイナー、パッチ) にノードを持たせるにはどうすればよいでしょうか? そんな感じ:

// Major
MERGE (M0:Semver:Major {v: 0}) 
MERGE (M1:Semver:Major {v: 1})
// Minor
MERGE (Mi0: Semver:Minor {v: 0 }) 
MERGE (Mi2: Semver:Minor {v: 2 }) 
MERGE (Mi10:Semver:Minor {v: 10})
// Patch
MERGE (P0:Semver:Patch {v:0}) 
MERGE (P2:Semver:Patch {v:2})

// Artifacts
MERGE (A1:Artifact {name:'Artifact 13afd'})
MERGE (A2:Artifact {name:'Artifact asdfk'})
MERGE (A3:Artifact {name:'Artifact 09sd2'})
MERGE (A4:Artifact {name:'Artifact skw30'})

// Versioning
MERGE (A1)-[:semver]->(M0) MERGE (A1)-[:semver]->(Mi0 ) MERGE (A1)-[:semver]->(P0)
MERGE (A2)-[:semver]->(M0) MERGE (A2)-[:semver]->(Mi0 ) MERGE (A2)-[:semver]->(P2)
MERGE (A3)-[:semver]->(M1) MERGE (A3)-[:semver]->(Mi2 ) MERGE (A3)-[:semver]->(P0)
MERGE (A4)-[:semver]->(M1) MERGE (A4)-[:semver]->(Mi10) MERGE (A4)-[:semver]->(P0)

RETURN *;

ここに画像の説明を入力

そして、目的のクエリ:

MATCH  (A:Artifact)-[:semver]->(Mj:Semver:Major),
       (A         )-[:semver]->(Mi:Semver:Minor),
       (A         )-[:semver]->(Pt:Semver:Patch)
RETURN A.name,  Mj.v,     Mi.v,     Pt.v
       ORDER BY Mj.v asc, Mi.v asc, Pt.v asc
于 2016-07-18T21:43:30.820 に答える