你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

查询文档

可以通过对 Cosmos DB 中的“colls”资源执行发布来查询集合中的任意 json 文档。 Cosmos DB 的 sql 语法提供分层、关系和空间查询运算符来查询和投影文档。 有关在 Cosmos DB 中查询资源的详细信息,请参阅查询资源。

请求

方法 请求 URI 说明
post https://{databaseaccount}.documents.azure.com/dbs/{db-id}/colls/{coll-id}/docs 请注意,{databaseaccount} 是在订阅下创建的 Cosmos DB 帐户的名称。 {db-id} 值是用户生成的数据库名称/ID,而不是系统生成的 id (rid) 。 {coll-id} 值是集合的名称。

标头

有关所有 Cosmos DB 请求 使用的标头,请参阅常见的 Azure Cosmos DB REST 请求标头。

标头 必需 类型 说明
x-ms-documentdb-isquery 必需 布尔 必须设置为 True,以指示 POST 为查询。
Content-Type 必须 字符串 必须设置为 application/query+json 的字符串。
x-ms-max-item-count 可选 Number 一个整数,指示每页返回的最大项数。 查询返回的项数不超过每页指定的项数,但可能会更少,具体取决于集合性能层及其大小。 可以指定 -1 的 x-ms-max-item-count,让服务确定最佳项计数。 这是 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“) 。 标头必须完全如上所示。

正文

属性 必选 类型 说明
query 必须 字符串 包含 SQL 查询文本。 有关语法,请参阅 SQL 语法
parameters 必需 数组 查询的参数值的数组。
{  
  "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 响应 返回的标头,请参阅常见的 Azure Cosmos DB REST 响应标头。 重要的响应标头包括:

属性 类型 说明
x-ms-continuation 字符串 返回一个标记,用于从操作中提取更多结果。 客户端可以使用包含此值的 x-ms-continuation 请求标头重新提交请求以继续执行。
x-ms-request-charge Number 操作使用的请求单位数。

状态代码

下表列出了此操作返回的常见状态代码。 有关状态代码的完整列表,请参阅 HTTP 状态代码

HTTP 状态代码 说明
200 正常 操作成功。
400 错误的请求 指定的请求使用了错误的 SQL 语法指定,或缺少必需的标头。

正文

属性 说明
_摆脱 这是系统为文档所在的集合生成的资源 ID。
_计数 这是列出操作返回的文档数。
文档 操作返回的文档数组。

文档的属性

属性 说明
id 这是标识文档的唯一名称,即没有两个文档可以共享相同的 IDID 不得超过 255 个字符。
<custom> 任何用户定义的 JSON。
_摆脱 这是 系统生成的属性。 资源 ID (_rid) 是一个唯一标识符,也是按资源模型上的资源堆栈分层的标识符。 它在内部用于文档资源的放置和导航。
_ts 这是系统生成的属性。 它指定资源的上次更新时间戳。 高值是一个时间戳。
_自我 这是系统生成的属性。 它是资源的唯一可寻址 URI。
_Etag 这是一个系统生成的属性,指定乐观并发控制所需的资源 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/"  
}  
  

另请参阅