使用$count=true查询选项,以包含与筛选条件匹配的实体计数。对于标准表,最多包含 5,000 个,对于弹性表,最多包含 500 个。
请求:
GET [Organization URI]/api/data/v9.2/accounts?$select=accountid&$count=true
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
响应:
HTTP/1.1 200 OK
OData-Version: 4.0
{
"@odata.context": "[Organization URI]/api/data/v9.2/$metadata#accounts(accountid)",
"@odata.count": 9,
"value": [
{
"@odata.etag": "W/\"81359849\"",
"accountid": "78914942-34cb-ed11-b596-0022481d68cd"
},
... <Truncated for brevity>
]
}
响应 @odata.count 注释包含符合筛选条件的行数,标准表最多为 5,000 行,弹性表最多为 500 行,而不管请求的页面大小如何。
注释
若要检索过去 24 小时内某张表的总行数快照(标准表上限为 5,000 行,弹性表上限为 500 行),请使用 RetrieveTotalRecordCount 函数。
如果计数值等于您所用表类型的限制,且您想知道该计数值是恰好等于该数值还是大于该数值,请添加 Prefer 请求头,以发送 odata.include-annotations 首选项,获取以下注释:
Microsoft.Dynamics.CRM.totalrecordcountMicrosoft.Dynamics.CRM.totalrecordcountlimitexceeded
Prefer: odata.include-annotations="Microsoft.Dynamics.CRM.totalrecordcount,Microsoft.Dynamics.CRM.totalrecordcountlimitexceeded"
此标头将以下注释添加到结果中:
@Microsoft.Dynamics.CRM.totalrecordcount@Microsoft.Dynamics.CRM.totalrecordcountlimitexceeded
将此标头与查询选项一起使用 $count=true 并且有 5,000 条以上的标准记录时,将返回以下值:
"@odata.count": 5000,
"@Microsoft.Dynamics.CRM.totalrecordcount": 5000,
"@Microsoft.Dynamics.CRM.totalrecordcountlimitexceeded": true,
如果记录少于 5,000 条,则返回实际计数。
"@odata.count": 58,
"@Microsoft.Dynamics.CRM.totalrecordcount": 58,
"@Microsoft.Dynamics.CRM.totalrecordcountlimitexceeded": false,
如果未包含 $count=true 查询选项,则总 @Microsoft.Dynamics.CRM.totalrecordcount 值为 -1。
以下示例显示有 10 个帐户与前 $filter三个帐户匹配,但只返回前三个帐户:
请求:
GET [Organization URI]/api/data/v9.2/accounts?$select=name?
&$filter=contains(name,'sample')
&$count=true
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
Prefer: odata.maxpagesize=3
Prefer: odata.include-annotations="Microsoft.Dynamics.CRM.*"
响应:
HTTP/1.1 200 OK
Content-Type: application/json; odata.metadata=minimal
OData-Version: 4.0
Preference-Applied: odata.maxpagesize=3
Preference-Applied: odata.include-annotations="Microsoft.Dynamics.CRM.*"
{
"@odata.context":"[Organization URI]/api/data/v9.2/$metadata#accounts(name)",
"@odata.count":10,
"@Microsoft.Dynamics.CRM.totalrecordcount": 5000,
"@Microsoft.Dynamics.CRM.totalrecordcountlimitexceeded": true,
"value":[
{
"@odata.etag":"W/\"502482\"",
"name":"Fourth Coffee (sample)",
"accountid":"655eaf89-f083-e511-80d3-00155d2a68d3"
},
{
"@odata.etag":"W/\"502483\"",
"name":"Litware, Inc. (sample)",
"accountid":"675eaf89-f083-e511-80d3-00155d2a68d3"
},
{
"@odata.etag":"W/\"502484\"",
"name":"Adventure Works (sample)",
"accountid":"695eaf89-f083-e511-80d3-00155d2a68d3"
}
],
"@odata.nextLink":"[Organization URI]/api/data/v9.2/accounts?$select=name&$filter=contains(name,'sample')&$skiptoken=%3Ccookie%20pagenumber=%222%22%20pagingcookie=%22%253ccookie%2520page%253d%25221%2522%253e%253caccountid%2520last%253d%2522%257b695EAF89-F083-E511-80D3-00155D2A68D3%257d%2522%2520first%253d%2522%257b655EAF89-F083-E511-80D3-00155D2A68D3%257d%2522%2520%252f%253e%253c%252fcookie%253e%22%20istracking=%22False%22%20/%3E"
}
若要仅获取表示集合计数的数字,请追加 /$count,如以下示例所示:
请求:
GET [Organization URI]/api/data/v9.2/accounts/$count
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
响应:
HTTP/1.1 200 OK
Content-Type: text/plain
OData-Version: 4.0
10
后续步骤
了解如何优化性能。