如何查询CosmosDB的嵌套对象值

时间:2019-11-29 11:25:46

标签: azure azure-cosmosdb azure-cosmosdb-sqlapi

鉴于CosmosDB中的此文档,我如何检索与order_id = 9234029m匹配的对象:

{
    "order": {
        "order_id": "9234029m",
        "order_name": "name",
    }
}

我尝试在CosmosDB Data Explorer中进行查询,但是不可能像这样简单地查询嵌套的order_id对象:

SELECT * FROM c WHERE c.order.order_id = "9234029m"

(错误:“语法错误,'order'附近的语法不正确”)

这似乎应该是如此简单,但事实并非如此! (在CosmosDB Data Explorer中,所有查询都必须以SELECT * FROM c开头,但是REST SQL也是替代方法。)

2 个答案:

答案 0 :(得分:1)

很明显,这是由于order是CosmosDB SQL中的保留关键字,即使如上所述使用也是如此。

答案 1 :(得分:1)

您发现,order是一个保留关键字,它使查询解析失败。但是,您可以通过略有不同的语法(括号表示法)来克服这些问题,并仍然查询数据:

SELECT *
FROM c
WHERE c["order"].order_id = "9234029m"