Должен работать в пн go версия 3.4
Привет, В рамках агрегирования соответствующих тегов я хотел бы вернуть теги, которые имеют script_url
, не содержащееся в whiteList
массив.
Дело в том, что я хочу сравнить script_url
с регулярным выражением значений массива.
У меня есть этот прогноз:
{
"script_url" : "www.analytics.com/path/file-7.js",
"whiteList" : [
null,
"www.analytics.com/path/*",
"www.analytics.com/path/.*",
"www.analytics.com/path/file-6.js",
"www.maps.com/*",
"www.maps.com/.*"
]
}
Этот $match
сравнивает script_url
с точными whiteList
значениями. Таким образом, документ, указанный выше, проходит, когда он не должен, поскольку он имеет www.analytics.com/path/.* in whiteList
{
"$match": {
"script_url": {"$nin": ["$whiteList"]}
}
}
Как мне сопоставить script_url
со значениями регулярного выражения whiteList
?
update
Мне удалось достичь этого этапа в моей агрегации:
{
"script_url" : "www.asaf-test.com/path/file-1.js",
"whiteList" : [
"http://sd.bla.com/bla/878/676.js",
"www.asaf-test.com/path/*"
],
"whiteListRegex" : [
"/http:\/\/sd\.bla\.com\/bla\/878\/676\.js/",
"/www\.asaf-test\.com\/path\/.*/"
]
}
Но $match
не фильтрует это script_url
, как предполагалось, потому что он сравнивает литерал строки и не приводит значения массива к регулярным выражениям значениям. Есть ли способ преобразовать значения массива в Regex значения в $map
, используя v3.4 ?