我正在从我的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中的一个主要错误?
答案 0 :(得分:3)
我认为您的问题与文档中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"
}
]
如上所述,您可以看到:
itemName 1 2 3是正常的。
itemName 4是一个对象。
itemName 5是一个数组。
itemName 6是&#34;&#34;。
itemName 7未定义。
然后执行sql:select c.id,c.itemName from c order by c.itemName
,结果如下:
itemName 4 5 7没有显示出来。所以我认为obj,数组和未定义的值不能用正常的字符串值排序。这是你问题的原因。
希望它对你有所帮助。
答案 1 :(得分:1)
应该是
SELECT c.Name, c.Grade FROM c WHERE c.Grade > 10 AND c.Category = "A" order by c.Name
在 cosmosdb playground 上运行示例查询并检查