使用query.v1
端点进行分页时,如何获得结果总数?
这样的请求:
/rest-1.v1/Data/Member?page=2,0
返回以下内容:
<Assets total="4" pageSize="2" pageStart="0">...
请注意属性total="4"
。
而像这样的查询:
{
"from": "Story",
"page":
{
"start":0,
"size":2
}
}
返回以下内容:
[
[
{
"_oid": "Story:1007"
},
{
"_oid": "Story:1015"
}
]
]
请注意,没有任何总计数。
我可以在select语句中提供一些特殊参数来包含计数吗? (与@Count
端点rest-1.v1/Data
类似?)
答案 0 :(得分:1)
不幸的是,在使用query.v1端点时,默认情况下不存在此信息,因为它与rest-1.v1一样。但是这里有一个可以使用的解决方法,使用两种查询方法。
[
{
"from": "Scope",
"select":["Workitems.@Count"],
"filter":["ID='Scope:0'","Workitems.AssetType='Story'"]
},
{
"from": "Story",
"select": ["Name"],
"filter":["Scope='Scope:0'"],
"page":
{
"start":0,
"size":2
}
}
]
答案 1 :(得分:1)
经过进一步调查,以下是使用两个查询计算结果的解决方案:
[
{
"from": "Scope",
"select":["Workitems:Story[AssetState!='Dead'].@Count"],
"filter":["ID='Scope:0'"]
},
{
"from": "Story",
"select": ["Name"],
"filter":["Scope='Scope:0'","AssetState!='Dead'"],
"page":
{
"start":0,
"size":200
}
}
]
关于第4行的一些澄清:
"select":["Workitems:Story[AssetState!='Dead'].@Count"]
&#34;工作项目&#34;我们正在将该集合下载到&#34; Story&#34;,然后过滤&#34; AssetState&#34;不是&#34;死亡&#34;获得活跃的故事,最后计算工作项目。
在这里您可以找到一些参考文献和其他文档:
答案 2 :(得分:0)
@LaureanoRemedi回答了这个问题,但我想扩展它以适应过滤Workitems
而不仅仅是Scope
。
比如说,我们想要计算属于Story的任务数量。我们可以使用向下转换和过滤器语法按Task
属性过滤属于该Scope
的{{1}}:
Parent
有了这个,我们可以建立一个多查询请求:
"Workitems:Task[Parent='Story:1007'].@Count"
返回计数和结果:
[{
"from": "Scope",
"where": {"ID":"Scope:1000"},
"select": [ "Workitems:Task[Parent='Story:1007'].@Count" ]
},
{
"from": "Task",
"where": { "Parent": "Story:1007" }
}]