Как я могу добавить 'путь' к моему AQL-запросу Artifactory? - PullRequest
0 голосов
/ 30 октября 2019

Я использую бессонницу для вызова API Artifactory.
У меня есть следующий запрос, который работает очень хорошо:

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

Я пытался добавить параметр пути в свой запрос, я пыталсяудаление всего, кроме репо и пути, например:

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

Я пробовал только путь, с вариациями на пути, включая / исключая имя репо, используя виртуальное репо, фактическоерепо, но я всегда получаю успешный поиск с 0 результатами.

Как построить этот запрос для поиска в виртуальном репо по определенному пути и с учетом определенных свойств?

РЕДАКТИРОВАТЬ:
Я также пытался:

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

Как с репо в пути, так и без, я по-прежнему получаю 0 результатов.

1 Ответ

0 голосов
/ 30 октября 2019

ОК. Я понял это.
Часть 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"}}
]})
...