1

我正在使用失眠症来调用 Artifactory API。
我有以下查询,效果很好:

items.find({"repo":{"$eq":"my-repository-virt"}}, {"$and":[{"@my.fileType":{"$match": "jar"}},{"@my.otherType":{"$match": "type2"}},{"@prodVersion":{"$match": "false"}}]})   

但是我有一个问题,即在某些子文件夹中存在重复的文件,这些文件具有相同的属性/文件名,我想排除这些文件。
我想为此查询添加路径,但我永远无法返回任何结果。
该存储库是一个虚拟存储库,可链接到其他 3 个真实存储库。

我的一位同事可以使用命令行工具调用以下查询并获得预期结果:

 jfrog rt search my-repo-snapshots/myproject/subfolder/jars/*.jar

我尝试将路径参数添加到我的查询中,我尝试删除除 repo 和路径之外的所有内容,如下所示:

items.find({"repo":{"$eq":"my-repo-snapshots"}},{"path" : "my-repo-snapshots/myproject/subfolder/jars/*.jar"})

我只尝试了路径,路径上的变化,包括/不包括 repo 名称,使用虚拟 repo,实际 repo,但我总是得到一个成功的搜索,返回 0 个结果。

如何构建此查询以沿特定路径搜索虚拟存储库并包括某些属性?

编辑:
我也试过:

items.find({"repo":{"$eq":"my-repo-snapshots"}},{"path" : {"$match":"my-repo-snapshots/myproject/subfolder/jars/*.jar"}})   

无论有没有路径中的 repo,我仍然得到 0 个结果。

4

2 回答 2

2

好的,我想通了。
path部分需要与{"$and": ...}包含属性的部分一起添加。像这样:

items.find({"repo":{"$eq":"my-repository-virt"}}, 
{"$and":[
{"path":{"$match":"path/to/relevant/folders/*"}}, 
{"@my.fileType":{"$match": "jar"}},
{"@my.otherType":{"$match": "type2"}},
{"@prodVersion":{"$match": "false"}}
]})
于 2019-10-30T13:12:05.420 回答
1

更简单的解决方法是:

items.find({"repo":{"$eq":"my-repo-snapshots"}},{"path" : {"$eq":"my-repo-snapshots/myproject/subfolder/jars"}, {"name" : {"$match":"*.jar"}})   

因此,您最初尝试的问题是“路径”应与文件夹匹配,“名称”应与文件名匹配

于 2021-09-03T09:11:40.553 回答