如何在JSON中获取嵌套字段

问题描述

背景:

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

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

                          ]
     }

这是我尝试做的事情:

由于这是一个嵌套文档。我的查询看起来像这样:

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

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

感谢您的帮助

解决方法

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

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

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