DocumentDB SQL com ARRAY_CONTAINS
Estou brincandohttps://www.documentdb.com/sql/demo, o que me permite consultar documentos de exemplo que se parecem com:
{
"id": "19015",
"description": "Snacks, granola bars, hard, plain",
"tags": [
{
"name": "snacks"
}
],
"version": 1,
"isFromSurvey": false,
"foodGroup": "Snacks",
"servings": [
{
"amount": 1,
"description": "bar",
"weightInGrams": 21
}
]
}
Estou confuso sobreARRAY_CONTAINS()
. Esta consulta retorna resultados:
SELECT root
FROM root
WHERE ARRAY_CONTAINS(root.tags, { "name": "snacks" })
No entanto, esta consulta não:
SELECT root
FROM root
WHERE ARRAY_CONTAINS(root.servings, { "description": "bar" })
O que da?
O que estou tentando obter é ilustrado por como eu escreveria a consulta se fosse C #:
var filteredDocs = docs.Where(d => d.Servings != null &&
d.Servings.Length > 0 &&
d.Servings.Any(s => s.Description == "bar"));
Aparece o primeiro exemplo de consulta emroot.tags
funciona porque{ "name": "snacks" }
é ointeira objeto noroot.tags
matriz, enquanto, na segunda consulta,{ "description": "bar" }
é apenasum campo noroot.servings
objetos.
Como posso modificar a segunda consulta emroot.servings
trabalhar apenas conhecendo a porçãodescription
?