当我们使用带有WHERE子句的Cosmos DB查询时,有时候会遇到continuation token不起作用的问题。产生这个问题的原因是WHERE子句可能会限制查询的结果集,并且无法正确地计算continuation token。
为了解决这个问题,我们可以使用IN子句代替WHERE子句。例如,如果我们要查询所有名字以“A”开头的用户,我们可以使用以下代码:
var query = new QueryDefinition("SELECT * FROM users u WHERE STARTSWITH(u.name, 'A')");
var continuationToken = string.Empty;
do
{
var options = new FeedOptions { RequestContinuation = continuationToken };
var result = await container.GetItemQueryIterator
foreach (var user in result)
{
// do something with user
}
continuationToken = result.ContinuationToken;
} while (!string.IsNullOrEmpty(continuationToken));
在上面的代码中,我们使用STARTSWITH()函数来代替WHERE子句,这可以确保在结果集中存在所有以“A”开头的用户。然后我们使用do-while循环来迭代查询的结果集,并在每次迭代中更新continuation token。
使用上述方法,可以确保continuation token在查询结果集上正常工作,即使有WHERE子句限制查询结果集也不例外。
上一篇:AzureCosmosDBST_DISTANCE函数在西部美国坐标下无法工作
下一篇:AzureCosmos分页:在下一个请求中不起作用的FeedResponse.ContinuationToken。