首页 > 解决方案 > 如何在 CosmosDB 中查询嵌套对象值

问题描述

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

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

我曾尝试在 CosmosDB 数据资源管理器中进行查询,但无法order_id像这样简单地查询嵌套对象:

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

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

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

标签: azureazure-cosmosdbazure-cosmosdb-sqlapi

解决方案


正如您所发现的,order是一个保留关键字,它会影响查询解析。但是,您可以通过稍有不同的语法(括号表示法)来超越这一点,并仍然查询您的数据:

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

推荐阅读