首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Cosmos DB中有没有一种方法可以使用SQL API来过滤字符串数组中的值?

在Cosmos DB中有没有一种方法可以使用SQL API来过滤字符串数组中的值?
EN

Stack Overflow用户
提问于 2019-11-04 12:49:12
回答 1查看 44关注 0票数 1

我是SQL API的新手。我正在尝试为文档编写查询,如下所示:

代码语言:javascript
复制
{
   "School" : "ABC Elementary"
   "Grades" : [
      {
          "gradeLevel" : "First",
          "subjects" : ["Drawing", "Music", "Numbers", "Words" ]
      },
      {
          "gradeLevel" : "Second",
          "subjects" : ["Art", "Music", "Numbers", "Phonetics" ]
      }
   ]
}

另一个文档可以是

代码语言:javascript
复制
{
   "School" : "DEF Elementary"
   "Grades" : [
      {
          "gradeLevel" : "First",
          "subjects" : ["Drawing", "Music", "Numbers", "Words" ]
      },
      {
          "gradeLevel" : "Second",
          "subjects" : ["Arts & Crafts", "Music", "Numbers", "Phonetics", "PE" ]
      }
   ]
}

我正在尝试编写一个查询,它将返回以"PE“为主题的文档(在上面的例子中只有一个是"DEF Elementary”学校文档)或"Music“(在这个例子中都是学校文档)。

我试过了

代码语言:javascript
复制
SELECT * FROM c 
JOIN o IN o.Grades 
WHERE "PE" IN o.subjects

但这不会返回任何结果。我不确定这个查询是否可能,除非每个主体也是一个宾语:

代码语言:javascript
复制
"subjects" : [
   {"name" : "Art"}, 
   {"name" : "Music"}
]

如果SQL API不能返回结果,是否可以使用存储过程和/或UDF,同时还分解分区边界?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-04 13:46:17

请使用以下sql:

代码语言:javascript
复制
SELECT c.School,c.Grades FROM c 
JOIN o IN c.Grades 
WHERE ARRAY_CONTAINS(o.subjects,"PE",true)

输出:

代码语言:javascript
复制
[
    {
        "School": "DEF Elementary",
        "Grades": [
            {
                "gradeLevel": "First",
                "subjects": [
                    "Drawing",
                    "Music",
                    "Numbers",
                    "Words"
                ]
            },
            {
                "gradeLevel": "Second",
                "subjects": [
                    "Arts & Crafts",
                    "Music",
                    "Numbers",
                    "Phonetics",
                    "PE"
                ]
            }
        ]
    }
]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58687344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档