Запрос документов
Вы можете запросить произвольные документы 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/"
}