Cosmos DB (NoSQL API):INDEX_OF排序失效问题排查
Cosmos DB查询排序问题排查
你的查询无法按预期排序的原因是:ORDER BY c.Ordered中的c.Ordered是错误引用——Ordered是你在SELECT子句里定义的别名,并非集合中文档的原生属性,Cosmos DB无法识别这个字段,因此排序逻辑不生效。
可以通过两种方式修正:
- 直接在ORDER BY中重复INDEX_OF表达式:
SELECT c.myData, INDEX_OF(c.myData, "ABC") AS Ordered FROM c WHERE INDEX_OF(c.searchablePartNum, "ABC") >= 0 ORDER BY INDEX_OF(c.myData, "ABC")
- 使用子查询先计算别名,再在外层排序(适合逻辑复杂的场景,避免重复写表达式):
SELECT * FROM ( SELECT c.myData, INDEX_OF(c.myData, "ABC") AS Ordered FROM c WHERE INDEX_OF(c.searchablePartNum, "ABC") >= 0 ) AS subQuery ORDER BY subQuery.Ordered
内容的提问来源于stack exchange,提问作者user1256275
相关产品推荐
相关产品推荐

