如何在Python的azure.cosmos 4.3.0中查询Cosmos DB带斜杠分区键
解决Azure Cosmos DB for NoSQL查询带斜杠分区键的问题
要查询带斜杠的分区键'/pricedate',正确的做法是用方括号包裹属性名,这是Cosmos DB SQL语法中处理含特殊字符属性的标准方式。
正确的查询代码
# 用方括号引用带斜杠的属性名,同时指定分区键提升性能 x = container.query_items( query="select * from c where c[\"/pricedate\"] = '2018-04-01'", partition_key='2018-04-01' ) # 遍历查询结果 for item in x: print(item)
之前三种写法的问题分析
- 第一种
c.pricedate:实际属性名是/pricedate,这个写法匹配不到对应字段,查询无结果,遍历的时候触发StopIteration错误 - 第二种
c./pricedate:语法完全错误,点号后不能直接跟斜杠,不符合Cosmos DB SQL规范 - 第三种
c."/pricedate":Cosmos DB SQL不支持用双引号包裹属性名,必须用方括号处理特殊字符属性
额外优化建议
尽量不要开启enable_cross_partition_query=True,跨分区查询性能会很差。直接指定partition_key参数,能让查询直接定位到目标分区,大幅提升效率。
内容的提问来源于stack exchange,提问作者Dean MacGregor
相关产品推荐
相关产品推荐

