如何查询 CosmosDB 的嵌套对象值

knu*_*ole 8 azure azure-cosmosdb azure-cosmosdb-sqlapi

order_id = 9234029m考虑到 CosmosDB 中的此文档,如何检索匹配的对象:

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

Run Code Online (Sandbox Code Playgroud)

我尝试在 CosmosDB 数据资源管理器中查询,但不可能order_id像这样简单地查询嵌套对象:

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

Run Code Online (Sandbox Code Playgroud)

(错误:“语法错误,‘订单’附近的语法不正确”)

这看起来应该是这么简单,但事实并非如此!(在 CosmosDB 数据资源管理器中,所有查询都需要以 开头SELECT * FROM c,但 REST SQL 也是一种替代方案。)

Dav*_*gon 6

正如您所发现的,order是一个保留关键字,它导致查询解析失败。但是,您可以超越这一点,仍然查询数据,使用稍微不同的语法(括号表示法):

SELECT *
FROM c
WHERE c["order"].order_id = "9234029m"
Run Code Online (Sandbox Code Playgroud)