如何查询 CosmosDB 的嵌套对象值

How to query CosmosDB for nested object value

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

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

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

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

(错误:"Syntax error, incorrect syntax near 'order'")

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

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

如您所见,order 是一个保留关键字,它阻碍了查询解析。但是,您可以克服这一点,仍然可以使用略有不同的语法(括号表示法)查询您的数据:

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