使用Artifactory AQL时include导致sort失效问题求助
解决Artifactory AQL中include与sort共存时排序失效的问题
问题核心
使用.include()指定返回自定义属性@version后,基于系统字段created的排序完全失效,升降序输出结果一致;移除.include()后排序恢复正常。
解决思路
- 将排序字段加入include列表
Artifactory AQL中,若使用.include()指定返回字段,排序依赖的字段必须同时被包含在返回列表中,否则底层执行时无法正确获取该字段用于排序逻辑。修改后的AQL示例:
items.find({"repo":"my-repo","@app":"myapp", "@branch": "mybranch"}) .include(["@version", "created"]) .sort({"$asc" :["created"]}).limit(50)
注意:.include()支持传入数组,可同时指定自定义属性和系统字段。
排查Artifactory版本BUG
部分旧版本Artifactory存在include与sort组合使用的逻辑缺陷,若上述方法无效,可尝试升级到官方最新稳定版本。确认字段唯一性
检查是否存在与系统字段created同名的自定义属性@created,若存在会干扰排序逻辑,需明确使用不带@的系统字段进行排序。
内容的提问来源于stack exchange,提问作者shasi222
相关产品推荐
相关产品推荐

