强制Artifactory在搜索时使用数字比较?

时间:2019-03-25 13:59:31

标签: artifactory artifactory-query-lang

我正在尝试查找RPM软件包的最新版本(或最早,取决于比较运算符)( RPM位很重要)。我正在使用与此类似的AQL查询:

items.find( 
   { "$and" : [ 
     { "@rpm.metadata.name": { "$eq": "awesome_package"}}, 
     { "@rpm.metadata.version": { "$gte": "19.300.0.58"}} ] 
   })
   .include("@rpm.metadata.version")
   .sort( { "$asc": [ "name" ]})

正如Artifactory KnowledgeBase it's impossible to sort on properties所回答的那样,我必须使用{{1}中的属性条件,而不是仅对@rpm.metadata.version进行排序并使用.limit(1)来获得第一个最高结果。 }}子句。

尽管Artifactory的内置比较似乎完全是字典上的,所以对于上面的查询,我得到以下结果:

find

此结果包括版本19.300.0.9,according to RPM spec比我要搜索的版本(> = 19.300.0.58)早,因此不应包含在结果中,但是Artifactory仍然找到了该版本,最有可能是因为其搜索比较是按字典顺序进行的。

还要注意结果的排序,确实似乎是使用数字排序的(版本“ 19.300.0.9”在“ 19.300.0.58”和“ 19.300.0.59”之前)。

问题:是否可以强制Artifactory在搜索条件中使用数字(SemVer)比较?如果没有,还有其他方法可以从结果列表中排除无关的版本吗?

1 个答案:

答案 0 :(得分:1)

尽管不符合要求,但如果由创建的字段完成名称排序,则也会有所帮助。

created: