首页 文章

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

提问于
浏览
1

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

  • 1

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

    SELECT C['Value'] FROM C
    

    这将导致:

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

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

    为了解决这个问题,您可以按照Yannick所说的方式查询,即

    SELECT C['Value'] FROM C
    
  • 2

    在DocumentDB查询语法中,语法<collection_expresion> .property_name与<collection_expression> [“property_name”]完全相同 . 所以,有效的,

    c.name
    

    和...一样

    c["name"]
    

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

    因此,

    SELECT C["Value"] 
    FROM C
    

    将适用于您的情况 .

相关问题