本文介绍了带/不带";ORDER BY&qot;的CosmosDB SQL查询返回不同数量的项目的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在从我的Web服务查询cosmosdb SQL数据库。只需调用:
//Microsoft.Azure.Documents.Client, Version=1.18.0.0
DocumentClient.CreateDocumentQuery<dynamic>(collection, query,
new FeedOptions {EnableCrossPartitionQuery = true}).AsEnumerable();
现在我的查询如下所示:
SELECT c.Name, c.Grade
FROM c
WHERE c.Grade > 10
AND c.Category = "A"
ORDER BY c.Name
我收到1000个条目。现在,如果我删除"order by"部分,我将返回6000行!!我错过了什么吗?或者这是API中的主要错误吗?
推荐答案
我认为您的问题与文档中Name
字段的值有关。我在示例文档中测试了多种类型的Name
。
执行SQL:select c.id,c.itemName from c
后,结果如下:
[
{
"id": "1",
"itemName": "A"
},
{
"id": "2",
"itemName": "B"
},
{
"id": "3",
"itemName": "C"
},
{
"id": "4",
"itemName": [
{
"test": "for test"
}
]
},
{
"id": "5",
"itemName": {
"test": "for test"
}
},
{
"id": "6",
"itemName": ""
},
{
"id": "7"
}
]
与上述文档相同,您可以看到:
项目名称%1%2%3正常。
itemName%4是对象。
itemName%5是数组。
itemName%6为""。
未定义itemName%7。
然后执行SQL:select c.id,c.itemName from c order by c.itemName
,结果如下:
itemName%4%5%7未显示。所以我认为obj、数组和未定义的值不能用正常的字符串值进行排序。这是您出现问题的原因。
希望它能帮助您。
这篇关于带/不带";ORDER BY&qot;的CosmosDB SQL查询返回不同数量的项目的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!