Mongo API下查询字符串属性长度匹配对象,Cosmos不支持$expr、$where如何实现
Azure Cosmos DB按字符串属性长度过滤错误对象的实现方案
Cosmos DB原生支持字符串长度计算的内置函数,无需使用$expr、$where,也不需要全量遍历所有对象即可实现筛选。
核心查询写法
调用内置LENGTH()函数直接在WHERE子句中做长度判断,示例如下:
-- 筛选targetStr属性长度不等于指定值的异常对象 SELECT * FROM c WHERE LENGTH(c.targetStr) != 10
避免全量遍历的索引配置
只要配置了正确的索引策略,上述查询会直接走索引检索,不会触发全表扫描:
- 默认索引策略下,所有字符串属性默认开启范围索引,查询无需额外配置即可走索引
- 自定义索引策略时,需要给目标字符串属性配置范围索引,示例配置如下:
{ "indexingMode": "consistent", "includedPaths": [ { "path": "/targetStr/?", "indexes": [ { "kind": "Range", "dataType": "String", "precision": -1 } ] } ] }
常见异常场景的查询示例
- 排查属性长度超出上限的错误:
WHERE LENGTH(c.orderNo) > 32 - 排查属性长度低于下限的错误:
WHERE LENGTH(c.mobile) < 11 - 排查空字符串赋值错误:
WHERE LENGTH(c.address) = 0
内容的提问来源于stack exchange,提问作者juliano.net
相关产品推荐
相关产品推荐

