在Azure DocumentDB中,一些查询不起作用

时间:2016-08-02 07:04:12

标签: azure azure-cosmosdb

我使用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

我理解' Value'应该是azure documentdb中的关键字。我怎么查询呢?

3 个答案:

答案 0 :(得分:4)

Value是DocumentDB语法中的关键字,因此这就是您收到错误的原因。请参阅本文中的值关键字DocumentDB syntax - VALUE关键字提供了返回JSON值的方法。

为了解决这个问题,你可以按照Yannick的说法来查询,即

SELECT C['Value'] FROM C

答案 1 :(得分:2)

因为您的文档存储为JSON,所以您可以按如下方式访问它们:

SELECT C['Value'] FROM C

这将导致:

[
  {
    "Value": {
      "email": "abc@cdf.com"
    }
  }
]

答案 2 :(得分:1)

在DocumentDB查询语法中,语法< collection_expresion> .property_name与<完全相同collection_expression> [“property_name”]。所以,实际上,

c.name

相同
c["name"]

语法< collection_expression> [“property_name”]允许人们拒绝可能包含非标识符字符的属性,例如“我的值”(我和值之间的空格),或“值”,“选择”等关键字。

因此,

SELECT C["Value"] 
FROM C

将适用于您的情况。