Запрос Cosmos DB для одних и тех же объектов из нескольких схем - PullRequest
1 голос
/ 08 октября 2019

Предоставьте следующие документы, хранящиеся в Cosmos DB, как мне получить все элементы Child / Children, где поле FirstName каждого дочернего элемента - "Bob"? Я пытаюсь использовать синтаксис SQL-запроса, но не нашел правильного способа сделать это, который объединяет оба результата схемы документа.

// Document 1
{
    "id": "document1",
    "Child": {
        "FirstName": "Bob",
        "LastName": "Smith"
    }
}

// Document 2
{
    "id": "document2",
    "Children": [
        {
            "Name": "Bob",
            "LastName": "Jones"
        },
        {
            "Name": "Sue",
            "LastName": "Jones"
        }
    ]
}

Я пытаюсь написать запрос, который ищет все "Боб "дочерние элементы для достижения следующего вывода:

[
    {
        "FirstName": "Bob",
        "LastName": "Smith"
    },
    {
        "Name": "Bob",
        "LastName": "Jones"
    },
]

1 Ответ

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

Документы Cosmos db хранятся в формате json, вы не можете одинаково обрабатывать свойство Child (улучшенная структура) и свойство Children (вспомогательная структура) с помощью одного SQL-запроса.

Тогда нельзя сгладить и поместить в один объект, см. Пример:

enter image description here

c.Child неотобразить. Так что, боюсь, вам нужно запросить Child и Children отдельно, а затем объединить их для ваших требований.


Я пытался объяснить здесь. В одном запросе sql невозможно. Например, документ 1 не включает массив детей, документ 2 -. В одном sql C JOIN Children необходимо. Но для документа 1 дочернее объединение ничто не является ничем , поэтому результаты не будут извлечены. Вы можете попробовать это.

Поскольку функция UNION не поддерживается cosmos db, я все же предлагаю следующее предложение, чтобы запросить их отдельно и объединить.

...