【问题标题】:How to obtain nested fields within JSON如何在 JSON 中获取嵌套字段
【发布时间】:2020-08-13 17:00:46
【问题描述】:

背景:

我希望更新我的 JSON 文档中的嵌套字段。我想查询所有等于“新”的“状态”

      {
          "id": "123"
          "feedback" : {
             "Features" : [
                              {
                                "state":"new"
                              }
        

                          ]
     }

这是我试图做的:

因为这是一个嵌套文档。我的查询如下所示:

   SELECT * FROM c WHERE c.feedback.Features.state = "new"

但是,当我知道这存在于数据库中时,我总是以零结果结束。我究竟做错了什么?也许我得到 0 个结果是因为 Features 是一个数组?

感谢任何帮助

【问题讨论】:

  • 澄清一下:您将其标记为 [mongodb],但您的示例查询基于本机 SQL API。请确认您使用的是 SQL API 吗?
  • 我会删除这个标签。我添加了 MongoDB,因为我认为 CosmosDB 和 MongoDB 遵循类似的流程
  • 谢谢@ponury-kostek,我试过了,还是没有结果。我认为这是因为反馈是一个数组?

标签: azure azure-cosmosdb azure-cosmosdb-sqlapi


【解决方案1】:

对于数组,您需要使用ARRAY_CONTAINS()。例如,在您的情况下:

SELECT * 
FROM c
WHERE ARRAY_CONTAINS(c.feedback.Features,{'state': 'new'}, true)

第三个参数指定您在数组内的文档中搜索,而不是标量值。

【讨论】:

  • 谢谢@davidmakogon 我的方法对我最近的问题是否正确?如何查询嵌套 JSON 文档中的多个条件?请给任何建议。我已经阅读了文档,看起来我必须做一个 WHERE EXISTS...
猜你喜欢
  • 2020-09-14
  • 2023-01-20
  • 1970-01-01
  • 2019-06-16
  • 2021-12-21
  • 2020-07-11
  • 1970-01-01
  • 1970-01-01
  • 2021-06-21
相关资源
最近更新 更多