1

query.v1使用端点分页时如何获取结果总数?

rest-1.v1/数据

像这样的请求:

/rest-1.v1/Data/Member?page=2,0

返回以下内容:

<Assets total="4" pageSize="2" pageStart="0">...

注意属性total="4"

查询.v1

而像这样的查询:

{
  "from": "Story",
  "page":
  {
    "start":0,
    "size":2
  }
}

返回以下内容:

[
    [
        {
            "_oid": "Story:1007"
        },
        {
            "_oid": "Story:1015"
        }
    ]
]

请注意缺少任何总计数。

我可以在选择语句中提供一些特殊参数来包含计数吗?@Count(类似于rest-1.v1/Data端点?)

4

3 回答 3

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
        }
    }
]
于 2014-05-27T14:21:31.840 回答
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"]

在“Workitems”之后,我们将集合向下转换为“Story”,然后过滤“AssetState”不是“Dead”的地方以获得活跃的故事,最后计算 Workitems。

在这里您会找到一些参考资料和额外的文档:

VersionOne 语法

于 2014-07-10T14:44:52.923 回答
0

@LaureanoRemedi 回答了这个问题,但我想扩展它以适应Workitems不仅仅是Scope.

比如说,我们想计算属于一个故事的任务数量。我们可以使用 down-cast-and-filter 语法来过滤Task属于Scope它们的Parent属性的 s:

"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" }
}]

这将返回计数以及结果:

[
    [
        {
            "_oid": "Scope:1000",
            "Workitems:Task[Parent='Story:1007'].@Count": "2"
        }
    ],
    [
        {
            "_oid": "Task:1008"
        },
        {
            "_oid": "Task:1009"
        }
    ]
]
于 2014-07-17T02:09:59.183 回答