Je suis nouveau sur l'API SQL. J'essaie d'écrire des requêtes pour des documents comme celui-ci:

{
   "School" : "ABC Elementary"
   "Grades" : [
      {
          "gradeLevel" : "First",
          "subjects" : ["Drawing", "Music", "Numbers", "Words" ]
      },
      {
          "gradeLevel" : "Second",
          "subjects" : ["Art", "Music", "Numbers", "Phonetics" ]
      }
   ]
}

un autre document pourrait être

{
   "School" : "DEF Elementary"
   "Grades" : [
      {
          "gradeLevel" : "First",
          "subjects" : ["Drawing", "Music", "Numbers", "Words" ]
      },
      {
          "gradeLevel" : "Second",
          "subjects" : ["Arts & Crafts", "Music", "Numbers", "Phonetics", "PE" ]
      }
   ]
}

J'essaie d'écrire une requête qui retournera des documents qui ont "PE" comme sujet (un seul dans l'exemple ci-dessus, le document scolaire "DEF Elementary") ou "Musique" (les deux documents scolaires dans l'exemple).

j'ai essayé

SELECT * FROM c 
JOIN o IN o.Grades 
WHERE "PE" IN o.subjects

mais cela ne renvoie aucun résultat. Je ne suis pas certain que cette requête soit possible à moins que chaque sujet soit également un objet:

"subjects" : [
   {"name" : "Art"}, 
   {"name" : "Music"}
]

Si l'API SQL n'est pas capable de renvoyer des résultats, cela pourrait-il être fait avec une procédure stockée et / ou UDF, tout en prenant en compte les limites des partitions?

1
John 4 nov. 2019 à 07:49

1 réponse

Veuillez utiliser ci-dessous sql:

SELECT c.School,c.Grades FROM c 
JOIN o IN c.Grades 
WHERE ARRAY_CONTAINS(o.subjects,"PE",true)

Production:

[
    {
        "School": "DEF Elementary",
        "Grades": [
            {
                "gradeLevel": "First",
                "subjects": [
                    "Drawing",
                    "Music",
                    "Numbers",
                    "Words"
                ]
            },
            {
                "gradeLevel": "Second",
                "subjects": [
                    "Arts & Crafts",
                    "Music",
                    "Numbers",
                    "Phonetics",
                    "PE"
                ]
            }
        ]
    }
]
2
Jay Gong 4 nov. 2019 à 05:46