#azure-cosmosdb
#azure-cosmosdb
Вопрос:
я ищу способ фильтрации документов с использованием «фрагментов пути фильтрации» (за неимением лучшего слова). У меня глубоко вложенная и рекурсивная структура JSON, и я не хочу писать чудовищный запрос.
Запрос должен выглядеть примерно так
WHERE start_prop.next_prop.[here comes lots of different props which I want to "ignore"].next_inner_prop.[again stuff to ignore].final_prop = "Foo"
Может быть, «игнорировать» здесь неправильный термин, это больше, чем то []
, что должно выражать: «да, что бы здесь ни было».
или, альтернативно, что-то вроде этого
WHERE start_prop.next_prop.**.next_inner_prop.*.final_prop = "Foo"
Я надеюсь, что мой вопрос имеет смысл.
Спасибо
Комментарии:
1. По определению, я думаю, вам придется отказаться от любой индексации, поскольку индексы строятся на основе полного пути к значению, и это звучит так, как будто у вас нет известного пути для предоставления. Если это так, то не было бы никакой эффективности в запросе на стороне Cosmos по сравнению с захватом всего набора данных целиком и фильтрацией в клиентском коде.
Ответ №1:
Это не поддерживается. Как сказал Ноа, индексы строятся из полного пути к значению, и у вас нет известного пути. Также механизм запросов Cosmos не поддерживает *
ключевое слово. Так что этот SQL не может работать WHERE start_prop.next_prop.**.next_inner_prop.*.final_prop = "Foo"
. Вам нужно обработать это на стороне клиента.