Руководство. Запрос данных в Azure Cosmos DB для NoSQL

ОБЛАСТЬ ПРИМЕНЕНИЯ: NoSQL

Azure Cosmos DB для NoSQL поддерживает запросы документов с помощью встроенного синтаксиса запросов. В этой статье представлен пример документа и два примера запросов и результатов.

В этой статье рассматриваются следующие задачи:

  • Запрос данных NoSQL с помощью встроенного синтаксиса запросов

Предварительные требования

В этом руководстве предполагается, что у вас есть учетная запись, база данных и контейнер Azure Cosmos DB.

Если у вас их нет, выполните указанные ниже действия. Выполните инструкции из этого краткого руководства. Создайте учетную запись Azure Cosmos DB, базу данных, контейнер и элементы из портал Azure.

Запросы можно выполнять с помощью обозревателя Azure Cosmos DB в портал Azure. Вы также можете выполнять запросы с помощью REST API или различных пакетов SDK.

Дополнительные сведения о запросах см. в разделе Настройка, запущенная с запросами.

Пример документа

В запросах в этой статье используется следующий образец документа.

{
  "id": "WakefieldFamily",
  "parents": [
    { "familyName": "Wakefield", "givenName": "Robin" },
    { "familyName": "Miller", "givenName": "Ben" }
  ],
  "children": [
    {
      "familyName": "Merriam", 
      "givenName": "Jesse", 
      "gender": "female", "grade": 1,
      "pets": [
          { "givenName": "Goofy" },
          { "givenName": "Shadow" }
      ]
    },
    { 
      "familyName": "Miller", 
        "givenName": "Lisa", 
        "gender": "female", 
        "grade": 8 
    }
  ],
  "address": { "state": "NY", "county": "Manhattan", "city": "NY" },
  "creationDate": 1431620462,
  "isRegistered": false
}

Выбор всех полей и применение фильтра

С учетом примера семейного документа следующий запрос возвращает документы, в которых поле идентификатора соответствует WakefieldFamily. Так как это инструкция SELECT *, результатом выполнения запроса является сформированный документ JSON:

Запрос:

SELECT * 
FROM Families f 
WHERE f.id = "WakefieldFamily"

Результат:

{
  "id": "WakefieldFamily",
  "parents": [
    { "familyName": "Wakefield", "givenName": "Robin" },
    { "familyName": "Miller", "givenName": "Ben" }
  ],
  "children": [
    {
      "familyName": "Merriam", 
      "givenName": "Jesse", 
      "gender": "female", "grade": 1,
      "pets": [
          { "givenName": "Goofy" },
          { "givenName": "Shadow" }
      ]
    },
    { 
      "familyName": "Miller", 
        "givenName": "Lisa", 
        "gender": "female", 
        "grade": 8 
    }
  ],
  "address": { "state": "NY", "county": "Manhattan", "city": "NY" },
  "creationDate": 1431620462,
  "isRegistered": false
}

Выбор перекрестного продукта поля дочерней коллекции

Следующий запрос возвращает все заданные имена детей в семье, идентификатор которых соответствует WakefieldFamily.

Запрос:

SELECT c.givenName 
FROM Families f 
JOIN c IN f.children 
WHERE f.id = 'WakefieldFamily'

Результат:

[
  {
    "givenName": "Jesse"
  },
  {
    "givenName": "Lisa"
  }
]

Дальнейшие действия

В этом учебнике были выполнены следующие задачи:

  • Узнайте, как выполнять запросы с помощью встроенного синтаксиса запросов

Теперь вы можете приступать к следующему руководству, чтобы узнать, как глобально распределять данные.