【发布时间】:2015-04-22 06:57:42
【问题描述】:
我想从documentDB查询中获取有序数据,当然我知道DocumentDB不支持orderBY或排序概念,但是可以编写存储过程来获取排序列表,
我的查询类似于
SELECT root.id FROM Root root WHERE (root.age< 30)
我想在哪里按年龄排序。
当我尝试运行存储过程时,它会引发类似的聚合异常
{"Exception: Microsoft.Azure.Documents.BadRequestException, message: {\"Errors\":[\"Encountered exception while executing function. Exception = Error: {\\\"Errors\\\":[\\\"An invalid query has been specified with filters against path(s) that are not range-indexed. Consider adding allow scan header in the request.\\\"]}\\r\\nStack trace: Error: {\\\"Errors\\\":[\\\"An invalid query has been specified with filters against path(s) that are not range-indexed. Consider adding allow scan header in the request.\\\"]}\\n at callback (OrderBy.js:54:13)\\n at Anonymous function (OrderBy.js:521:29)\"]}, request URI: rntbd://10.98.107.60:14900/apps/4c8d65d7-216b-46b4-abb7-52c1a0c7123f/services/appcrest-ServerService-1/partitions/cf963206-7d13-4b94-9f03-06954e03f667/replicas/130737244172846540p\r\nActivityId: 7aeab81e-db33-4a7d-9bb6-172966d9cc60"}
从这个异常中,我了解到集合应该被某个属性索引,而我的集合没有被索引,
为此,我可以为我的集合应用索引,但如果我想获取按名称的其他属性排序的排序列表,它可能不起作用,
有人可以帮忙解决这个问题吗?
我的直接问题是“是否可以使用存储过程根据任何属性从 documentdb 获取排序列表(升序/降序)?”
下面的解决方案可以很好地按属性获取排序列表,但是当我想通过子属性获取排序列表顺序时(例如:s.Name.FirstName,其中 Name 是一个包含三个属性 FirstName 的属性, MiddleName 和 LastName) 不起作用。
有人可以帮我做这件事吗?
提前致谢
【问题讨论】:
标签: c# sorting stored-procedures azure-cosmosdb