У меня есть сложный объект json, сохраненный в базе данных postgresql, и я хочу найти все записи, которые содержат или начинаются с подстроки внутри массива. Объект json:
"configurations" : {
"CVE_data_version" : "4.0",
"nodes" : [ {
"operator" : "OR",
"cpe_match" : [ {
"vulnerable" : true,
"cpe23Uri" : "cpe:2.3:a:apache:http_server:*:*:*:*:*:*:*:*",
"versionStartIncluding" : "2.4.0",
"versionEndIncluding" : "2.4.41"
} ]
} ]
}
Точнее, я хочу найти все объекты, которые начинаются с: «cpe: 2.3: a: apache» в поле «cpe23Uri».
Сделанный мной запрос:
session.query(cvemodel.data['configurations']['nodes'][0]['cpe_match'].contains([{'cpe23Uri': 'cpe:2.3:a:apache:http_server:*:*:*:*:*:*:*:*'}])).all()
Проблема с этим запросом в том, что он соответствует всему слову. Если поставить:
session.query(cvemodel.data['configurations']['nodes'][0]['cpe_match'].contains([{'cpe23Uri': 'cpe:2.3:a:apache:http_server'}])).first()
Ничего не возвращает!