在Azure DocumentDB中,一些查询无法正常工作。

3

我使用Azure DocumentDB来存储一些键值对。这是我使用的文档结构:

{
    "Key": "Deleted",
    "Value": {
      "email": "abc@cdf.com"
    }
}

当我编写像这样的DocumentDB查询时,
SELECT C.Value FROM C

这个查询无法工作。这是我收到的错误信息。
Syntax error, incorrect syntax near 'Value'.

但是这个查询很好用,

SELECT C.Key FROM C

我了解在Azure DocumentDB中,“Value”应该是一个关键词。我该如何查询它?

你试过引用那个标识符吗?像是 SELECT C.'Value' FROM C 或者 SELECT C."Value" FROM C 这样的形式。 - undefined
你尝试过选择值 c.value 吗? - undefined
@MilanTomeš 是的,我都试过了。没有进展!。 - undefined
@Aravind 我刚试了一下,还是一样的。 - undefined
3个回答

11

在DocumentDB语法中,Value是一个关键字,这就是为什么你会收到错误信息的原因。请查看本文中的Value关键字DocumentDB syntax - VALUE关键字提供了一种返回JSON值的方式。

要避免这个问题,您可以按照Yannick所说的方法进行查询。

SELECT C['Value'] FROM C

5
由于您的文档以JSON格式存储,因此可以按以下方式访问它们:
SELECT C['Value'] FROM C

这将导致:
[
  {
    "Value": {
      "email": "abc@cdf.com"
    }
  }
]

3
在DocumentDB查询语法中,语法<collection_expression>.property_name与<collection_expression>["property_name"]完全相同。因此,在实际使用中,这两种语法具有等效的效果。
c.name

是相同的意思。
c["name"]

语法 < collection_expression >["property_name"] 允许我们解引用那些可能包含非标识符字符(如'my value'中的空格)或关键字(如'Value'、'Select'等)的属性。

因此,

SELECT C["Value"] 
FROM C

在你的情况下将会生效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接