有没有一种方法可以在 Cosmos DB 中使用 SQL API 按字符串数组中的值进行过滤?
Is there a way to filter by a value in an array of strings using SQL API in Cosmos DB?
我是 SQL API 的新手。我正在尝试为这样的文档编写查询:
{
"School" : "ABC Elementary"
"Grades" : [
{
"gradeLevel" : "First",
"subjects" : ["Drawing", "Music", "Numbers", "Words" ]
},
{
"gradeLevel" : "Second",
"subjects" : ["Art", "Music", "Numbers", "Phonetics" ]
}
]
}
另一个文件可能是
{
"School" : "DEF Elementary"
"Grades" : [
{
"gradeLevel" : "First",
"subjects" : ["Drawing", "Music", "Numbers", "Words" ]
},
{
"gradeLevel" : "Second",
"subjects" : ["Arts & Crafts", "Music", "Numbers", "Phonetics", "PE" ]
}
]
}
我正在尝试编写一个查询,该查询将 return 以 "PE" 作为主题的文档(上例中只有一个,"DEF Elementary" 学校文档)或 "Music"(示例中的两个学校文档)。
我试过了
SELECT * FROM c
JOIN o IN o.Grades
WHERE "PE" IN o.subjects
但这不是 return 任何结果。我不确定这个查询是否可行,除非每个主题也是一个对象:
"subjects" : [
{"name" : "Art"},
{"name" : "Music"}
]
如果 SQL API 无法 returning 结果,是否可以使用存储过程和/或 UDF 来完成,同时还要考虑分区边界?
请使用以下sql:
SELECT c.School,c.Grades FROM c
JOIN o IN c.Grades
WHERE ARRAY_CONTAINS(o.subjects,"PE",true)
输出:
[
{
"School": "DEF Elementary",
"Grades": [
{
"gradeLevel": "First",
"subjects": [
"Drawing",
"Music",
"Numbers",
"Words"
]
},
{
"gradeLevel": "Second",
"subjects": [
"Arts & Crafts",
"Music",
"Numbers",
"Phonetics",
"PE"
]
}
]
}
]
我是 SQL API 的新手。我正在尝试为这样的文档编写查询:
{
"School" : "ABC Elementary"
"Grades" : [
{
"gradeLevel" : "First",
"subjects" : ["Drawing", "Music", "Numbers", "Words" ]
},
{
"gradeLevel" : "Second",
"subjects" : ["Art", "Music", "Numbers", "Phonetics" ]
}
]
}
另一个文件可能是
{
"School" : "DEF Elementary"
"Grades" : [
{
"gradeLevel" : "First",
"subjects" : ["Drawing", "Music", "Numbers", "Words" ]
},
{
"gradeLevel" : "Second",
"subjects" : ["Arts & Crafts", "Music", "Numbers", "Phonetics", "PE" ]
}
]
}
我正在尝试编写一个查询,该查询将 return 以 "PE" 作为主题的文档(上例中只有一个,"DEF Elementary" 学校文档)或 "Music"(示例中的两个学校文档)。
我试过了
SELECT * FROM c
JOIN o IN o.Grades
WHERE "PE" IN o.subjects
但这不是 return 任何结果。我不确定这个查询是否可行,除非每个主题也是一个对象:
"subjects" : [
{"name" : "Art"},
{"name" : "Music"}
]
如果 SQL API 无法 returning 结果,是否可以使用存储过程和/或 UDF 来完成,同时还要考虑分区边界?
请使用以下sql:
SELECT c.School,c.Grades FROM c
JOIN o IN c.Grades
WHERE ARRAY_CONTAINS(o.subjects,"PE",true)
输出:
[
{
"School": "DEF Elementary",
"Grades": [
{
"gradeLevel": "First",
"subjects": [
"Drawing",
"Music",
"Numbers",
"Words"
]
},
{
"gradeLevel": "Second",
"subjects": [
"Arts & Crafts",
"Music",
"Numbers",
"Phonetics",
"PE"
]
}
]
}
]