如何在CosmosDB中查询嵌套对象并匹配指定order_id?
解决Cosmos DB查询中
order属性导致的语法错误问题 嗨,这个问题我之前也踩过坑!你遇到的语法错误,根源在于order是Cosmos DB SQL的保留关键字——直接把它当作文档属性名使用时,查询引擎会误把它识别成SQL命令的一部分,从而抛出语法错误。
修正后的查询语句
只需要用方括号[]把关键字属性名包裹起来,转义成普通的属性标识符即可,两种写法都可以:
- 仅转义顶层关键字属性:
SELECT * FROM c WHERE c["order"].order_id = "9234029m"
- 全嵌套属性都用方括号转义(更通用的写法,适合多个关键字属性的场景):
SELECT * FROM c WHERE c["order"]["order_id"] = "9234029m"
原理说明
Cosmos DB SQL的保留关键字(比如order、select、from这些)不能直接作为文档的属性名在查询中使用,必须通过方括号的方式转义,告诉查询引擎这是一个普通的属性名称,而非SQL语法的一部分。修改后,查询就能正确识别c["order"]指向文档中的order对象,进而匹配对应的order_id值了。
内容的提问来源于stack exchange,提问作者knutole
相关产品推荐
相关产品推荐

