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?

Antworten auf die Frage(8)

Ihre Antwort auf die Frage