【问题标题】:Using reserved word field name in DocumentDB在 DocumentDB 中使用保留字字段名称
【发布时间】:2015-08-31 04:38:09
【问题描述】:

我继承了一个加载到 DocumentDB 中的数据库,其中字段名称恰好是“值”。 我的结构示例是:

{
...
   "Alternates": [
      "Type": "ID",
      "Value" : "NOCALL"
   ]
}

当我查询(使用 documentDB 的 SQL)时,试图取回 Alternates.Value = "NOCALL", 附近出现语法错误的所有文档

“值”错误

。如果我查询Type = "ID",,一切都很好。

似乎在 DocumentDB 上具有特殊含义的 Value 一词引起了问题。

在“值”周围加上标点符号(例如引号/双引号)似乎没有帮助。

任何有关如何解决此问题的建议将不胜感激!

提前谢谢你!

【问题讨论】:

  • 你试过方括号吗? Alternates.[Value] = "NOCALL"
  • 是的,我有:语法错误,'[' 附近的语法不正确。
  • 看到与列名 Order 完全相同的问题

标签: sql field azure-cosmosdb reserved


【解决方案1】:

你是对的。值是保留关键字。 要转义此使用 [""] 语法。

所以在你的情况下

“替代”:[ “类型”:“ID”, “值”:“NOCALL” ]

选择 c 从 c 在 c.Alternates 中加入 alt WHERE alt["Value"] = 'NOCALL'

【讨论】:

  • 感谢 Ryank 提供这个,它在重构我的自动化脚本的性能方面节省了很多时间,你能否分享一下你从哪里学到这个技巧的参考
【解决方案2】:

在我的例子中,结构看起来像这样 - { "name": "ABC", "Value": 123 }。

我可以使用 [""] (由其他人回答)与 一起转义保留关键字,即

从 c 中选择 c["Value"] -- 123

参考:Querying in Azure Cosmos DB

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-07
    • 2015-11-22
    • 2010-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-14
    相关资源
    最近更新 更多