DocumentDB SQL mit ARRAY_CONTAINS
Ich spiele herum aufhttps: //www.documentdb.com/sql/dem, mit dem ich nach Beispieldokumenten suchen kann, die wie folgt aussehen:
{
"id": "19015",
"description": "Snacks, granola bars, hard, plain",
"tags": [
{
"name": "snacks"
}
],
"version": 1,
"isFromSurvey": false,
"foodGroup": "Snacks",
"servings": [
{
"amount": 1,
"description": "bar",
"weightInGrams": 21
}
]
}
Ich bin verwirrt überARRAY_CONTAINS()
. Diese Abfrage liefert Ergebnisse:
SELECT root
FROM root
WHERE ARRAY_CONTAINS(root.tags, { "name": "snacks" })
Diese Abfrage bewirkt jedoch nicht:
SELECT root
FROM root
WHERE ARRAY_CONTAINS(root.servings, { "description": "bar" })
Was gibt
Was ich versuche zu erreichen, wird durch die Art und Weise veranschaulicht, wie ich die Abfrage schreiben würde, wenn dies C # wäre:
var filteredDocs = docs.Where(d => d.Servings != null &&
d.Servings.Length > 0 &&
d.Servings.Any(s => s.Description == "bar"));
s erscheint die erste Beispielabfrage aufroot.tags
funktioniert, weil{ "name": "snacks" }
ist der gesamtes Objekt imroot.tags
array, während in der zweiten Abfrage{ "description": "bar" }
ist nur ein Feld in demroot.servings
objects.
Wie kann ich die zweite Abfrage am @ änderroot.servings
mit nur wissen, die Portion zu arbeitendescription
?