#azure-cosmosdb
#azure-cosmosdb
Вопрос:
Учитывая документы, подобные этому:
{
"Damage":
{
"Cause_of_Damage": ["Weather"],
"Category": ["High"]
}
}
Этот запрос возвращает массив различных значений, и он работает:
SELECT DISTINCT VALUE i
FROM c
JOIN i IN c.Damage.Cause_of_Damage
Как я могу добавить "Category"
свойство аналогичным образом и вернуть оба в виде массивов различных значений? Желаемый пример результата:
{
"cause": ["Weather"],
"category": ["High"]
}
Ответ №1:
Соответствует ли это вашим требованиям?
SELECT Array(SELECT DISTINCT VALUE i
FROM c
JOIN i IN c.Damage.Cause_of_Damage) as cause,
Array(SELECT DISTINCT VALUE j
FROM c
JOIN j IN c.Damage.Category) as category
FROM c
Результат:
[
{
"cause": [
"Weather"
],
"category": [
"High"
]
}
]
Комментарии:
1. Это многообещающее начало, но это дает мне много результирующих документов вместо одного, он возвращает один результирующий документ для каждого отдельного значения. Есть ли способ объединить все различные значения в массивы одного результирующего документа?
2. На самом деле, возможно ли, что этот запрос объединения, по-видимому, создает перекрестный продукт всех объединенных результатов? Это было бы огромным количеством записей результатов.
3. Я понимаю. Насколько я знаю, это не может быть достигнуто вызовом через sql. Вам нужно выполнить два вызова.
4. Это то, чего я боялся. Спасибо!
5. Кстати, если вы уточните в своем ответе, что на самом деле это невозможно сделать в одном документе, я могу пометить ваш ответ как принятый.