如何在CosmosDB索引策略中转义特殊字符?需索引$Type属性
解决Azure Cosmos DB中带$前缀属性的索引配置问题
要给名为$Type的属性创建可用索引,你需要在索引路径中对$符号进行双重转义,正确的路径写法是:
"path": "/\\$Type/?"
完整的索引策略示例
以下是包含该属性索引的完整配置片段(仅展示核心规则部分):
"indexingPolicy": { "includedPaths": [ { "path": "/\\$Type/?", "indexes": [ { "kind": "Range", "dataType": "String", "precision": -1 } ] } ], "excludedPaths": [ { "path": "/*" } ] }
为什么之前的写法无效?
- 直接写
"/$Type/?"时,Cosmos DB会将$识别为特殊语法符号,而非属性名的一部分,因此无法匹配到你的$Type属性。 "/"$"Type/?"属于JSON语法错误,自然会被拒绝。
验证索引是否生效
配置完成后,运行你的查询SELECT * FROM c WHERE c["$Type"] = "User",可以通过Cosmos DB的查询执行计划查看是否使用了索引(执行计划中会显示Index Scan而非Full Scan)。
内容的提问来源于stack exchange,提问作者Tomer
相关产品推荐
相关产品推荐

