2016-03-30 121 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),那么事情可能会中断。 –