Запрос документов

Вы можете запросить произвольные документы JSON в коллекции, выполнив запись для ресурса colls в Cosmos DB. Синтаксис SQL Cosmos DB предоставляет иерархические, реляционные и пространственные операторы запросов для запроса и проецировать документы. Дополнительные сведения о запросах ресурсов в Cosmos DB см. в разделе Запросы ресурсов.

Запрос

Метод Универсальный код ресурса (URI) запроса Описание
post https://{databaseaccount}.documents.azure.com/dbs/{db-id}/colls/{coll-id}/docs Обратите внимание, что {databaseaccount} — это имя учетной записи Cosmos DB, созданной в вашей подписке. значение {db-id} — это имя или идентификатор базы данных, созданное пользователем, а не системный идентификатор (rid). значение {coll-id} — это имя коллекции.

Заголовки

Заголовки, используемые всеми запросами Cosmos DB, см. в статье Общие заголовки запросов REST Azure Cosmos DB .

Заголовок Обязательно Тип Описание
x-ms-documentdb-isquery Обязательно Логическое Для параметра должно быть задано значение True, указывающее, что POST является запросом.
Content-Type Обязательно Строка Строка, для которую необходимо задать значение application/query+json.
x-ms-max-item-count Необязательно Число Целое число, указывающее максимальное количество возвращаемых элементов на страницу. Запросы будут возвращать не более указанного количества элементов на странице, но могут быть меньше в зависимости от уровня производительности коллекции и их размеров. Можно указать значение x-ms-max-item-count со значением -1, чтобы служба определяла оптимальное число элементов. Это рекомендуемое значение конфигурации для x-ms-max-item-count.
x-ms-continuation Необязательно Строка Строковый маркер, возвращаемый для запросов и операций чтения и веб-канала, если есть дополнительные результаты для чтения. Клиенты могут получить следующую страницу результатов, повторно отдав запрос с заголовком запроса x-ms-continuation, для которого задано это значение.
x-ms-documentdb-query-enablecrosspartition Необязательно Логическое Если коллекция секционирована, ей необходимо присвоить значение True, чтобы разрешить выполнение в нескольких секциях. Запросы, которые фильтруются по одному ключу секции или к односекционным коллекциям, не нужно задавать заголовок.
x-ms-consistency-level Необязательно Строка Это переопределение уровня согласованности. Допустимые значения: Strong, Bounded, Session или Eventual (в порядке от сильного к самому слабому). Переопределение должно быть таким же или слабым, чем настроенный для учетной записи уровень согласованности.
x-ms-session-token Необязательно Строка Строковый токен, используемый для согласованности на уровне сеанса. Клиенты должны повторять последнее значение для чтения этого заголовка во время запросов на чтение для согласованности сеанса.

Важно!

Для заголовка Content-Type НЕ включайте набор символов (т. е. "application/query+json; charset-utf-8"). Заголовок должен быть в точности таким, как показано выше.

Текст

Свойство Обязательно Тип Описание
запрос Обязательно Строка Содержит текст SQL-запроса. Сведения о грамматике см. в разделе Грамматика SQL.
parameters Обязательно Array Массив значений параметров для запроса.
{  
  "query": "SELECT * FROM Families f WHERE f.id = @id AND f.Address.City = @city",  
  "parameters": [  
    {  
      "name": "@id",  
      "value": "AndersenFamily"  
    },  
    {  
      "name": "@city",  
      "value": "Seattle"  
    }  
  ]  
}  
  

Ответ

Возвращает массив документов, соответствующих запрошенным запросам.

Заголовки

Заголовки, возвращаемые всеми ответами Cosmos DB, см. в статье Общие заголовки ответов REST Azure Cosmos DB . Важные заголовки ответа:

Свойство Тип Описание
x-ms-continuation Строка Возвращает маркер для получения дополнительных результатов операции. Клиент может повторно отправить запрос с заголовком запроса x-ms-continuation, содержащим это значение, чтобы возобновить выполнение.
x-ms-request-charge Число Количество единиц запросов, используемых операцией.

Коды состояния

В таблице ниже указаны стандартные коды состояния, возвращаемые этой операцией. Полный список кодов состояния см. в разделе Коды состояния HTTP.

Код состояния HTTP Описание
200 ОК Операция выполнена успешно.
400 — недопустимый запрос Этот запрос был указан с неверным синтаксисом SQL или в нем отсутствуют обязательные заголовки.

Текст

Свойство Описание
_Избавить Это созданный системой идентификатор ресурса для коллекции, в которой размещаются документы.
_Рассчитывать Это количество документов, возвращенных операцией списка.
Документы Массив документов, возвращенных операцией.

Свойства документа

Свойство Описание
идентификатор Это уникальное имя, которое идентифицирует документ, т. е. два документа не могут использовать один и тот же идентификатор. Длина идентификатора не должна превышать 255 символов.
<custom> Любой определяемый пользователем элемент JSON.
_rid Это свойство, созданное системой. Идентификатор ресурса (_rid) — это уникальный идентификатор, который также является иерархическим для стека ресурсов в модели ресурсов. Он используется внутренне для размещения ресурса документа и перемещения по нему.
_Ts Это системное свойство. Оно представляет метку времени последнего обновления ресурса. Значение — метка времени.
_Самостоятельно Это системное свойство. Это уникальный адресуемый URI для ресурса.
_etag Это системное свойство, указывающее тег ресурса, необходимый для управления оптимистическим параллелизмом.
_Вложения Это системное свойство, обозначающее адресуемый путь к ресурсу вложений.
{  
  "_rid": "1KtjAImkcgw=",  
  "Documents": [  
    {  
      "id": "AndersenFamily",  
      "LastName": "Andersen",  
      "Parents": [  
        {  
          "FamilyName": null,  
          "FirstName": "Thomas"  
        },  
        {  
          "FamilyName": null,  
          "FirstName": "Mary Kay"  
        }  
      ],  
      "Children": [  
        {  
          "FamilyName": null,  
          "FirstName": "Henriette Thaulow",  
          "Gender": "female",  
          "Grade": 5,  
          "Pets": [  
            {  
              "GivenName": "Fluffy"  
            }  
          ]  
        }  
      ],  
      "Address": {  
        "State": "WA",  
        "County": "King",  
        "City": "Seattle"  
      },  
      "IsRegistered": true,  
      "_rid": "1KtjAImkcgwBAAAAAAAAAA==",  
      "_self": "dbs/1KtjAA==/colls/1KtjAImkcgw=/docs/1KtjAImkcgwBAAAAAAAAAA==/",  
      "_etag": "\"00003200-0000-0000-0000-56f9e84d0000\"",  
      "_ts": 1459218509,  
      "_attachments": "attachments/"  
    }  
  ],  
  "_count": 1  
}  
  

Пример

POST https://querydemo.documents.azure.com/dbs/1KtjAA==/colls/1KtjAImkcgw=/docs HTTP/1.1  
x-ms-continuation:   
x-ms-documentdb-isquery: True  
x-ms-documentdb-query-enablecrosspartition: True  
x-ms-date: Tue, 29 Mar 2016 02:28:32 GMT  
authorization: type%3dmaster%26ver%3d1.0%26sig%3drOlOhFh9plfC0ggZfmHtS3XepVitiIRsd6i1d9PnuW8%3d  
Cache-Control: no-cache  
User-Agent: Microsoft.Azure.Documents.Client/1.6.0.0  
x-ms-version: 2015-12-16  
Accept: application/json  
Content-Type: application/query+json  
Host: querydemo.documents.azure.com  
Cookie: x-ms-session-token#0=604; x-ms-session-token=604  
Content-Length: 170  
Expect: 100-continue  
  
{  
  "query": "SELECT * FROM Families f WHERE f.id = @id AND f.Address.City = @city",  
  "parameters": [  
    {  
      "name": "@id",  
      "value": "AndersenFamily"  
    },  
    {  
      "name": "@city",  
      "value": "Seattle"  
    }  
  ]  
}  
  
HTTP/1.1 201 Created  
Cache-Control: no-store, no-cache  
Pragma: no-cache  
Transfer-Encoding: chunked  
Content-Type: application/json  
Server: Microsoft-HTTPAPI/2.0  
Strict-Transport-Security: max-age=31536000  
x-ms-last-state-change-utc: Fri, 25 Mar 2016 22:39:02.501 GMT  
etag: "00003200-0000-0000-0000-56f9e84d0000"  
x-ms-resource-quota: documentSize=10240;documentsSize=10485760;collectionSize=10485760;  
x-ms-resource-usage: documentSize=0;documentsSize=1;collectionSize=1;  
x-ms-schemaversion: 1.1  
x-ms-alt-content-path: dbs/testdb/colls/testcoll  
x-ms-quorum-acked-lsn: 602  
x-ms-current-write-quorum: 3  
x-ms-current-replica-set-size: 4  
x-ms-request-charge: 12.38  
x-ms-serviceversion: version=1.6.52.5  
x-ms-activity-id: 856acd38-320d-47df-ab6f-9761bb987668  
x-ms-session-token: 0:603  
Set-Cookie: x-ms-session-token#0=603; Domain=querydemo.documents.azure.com; Path=/dbs/1KtjAA==/colls/1KtjAImkcgw=  
Set-Cookie: x-ms-session-token=603; Domain=querydemo.documents.azure.com; Path=/dbs/1KtjAA==/colls/1KtjAImkcgw=  
x-ms-gatewayversion: version=1.6.52.5  
Date: Tue, 29 Mar 2016 02:28:30 GMT  
  
{  
  "id": "AndersenFamily",  
  "LastName": "Andersen",  
  "Parents": [  
    {  
      "FamilyName": null,  
      "FirstName": "Thomas"  
    },  
    {  
      "FamilyName": null,  
      "FirstName": "Mary Kay"  
    }  
  ],  
  "Children": [  
    {  
      "FamilyName": null,  
      "FirstName": "Henriette Thaulow",  
      "Gender": "female",  
      "Grade": 5,  
      "Pets": [  
        {  
          "GivenName": "Fluffy"  
        }  
      ]  
    }  
  ],  
  "Address": {  
    "State": "WA",  
    "County": "King",  
    "City": "Seattle"  
  },  
  "IsRegistered": true,  
  "_rid": "1KtjAImkcgwBAAAAAAAAAA==",  
  "_self": "dbs/1KtjAA==/colls/1KtjAImkcgw=/docs/1KtjAImkcgwBAAAAAAAAAA==/",  
  "_etag": "\"00003200-0000-0000-0000-56f9e84d0000\"",  
  "_ts": 1459218509,  
  "_attachments": "attachments/"  
}  
  

См. также: