DocumentDB SQL - From-Klausel
In diesem Kapitel werden wir die FROM-Klausel behandeln, die nichts mit einer Standard-FROM-Klausel in regulärem SQL zu tun hat.
Abfragen werden immer im Kontext einer bestimmten Sammlung ausgeführt und können nicht über Dokumente innerhalb der Sammlung hinweg verknüpft werden. Daher fragen wir uns, warum wir eine FROM-Klausel benötigen. Tatsächlich tun wir das nicht, aber wenn wir es nicht aufnehmen, werden wir keine Dokumente in der Sammlung abfragen.
Der Zweck dieser Klausel besteht darin, die Datenquelle anzugeben, mit der die Abfrage ausgeführt werden muss. Normalerweise ist die gesamte Sammlung die Quelle, aber man kann stattdessen eine Teilmenge der Sammlung angeben. Die FROM <from_specification> -Klausel ist optional, es sei denn, die Quelle wird später in der Abfrage gefiltert oder projiziert.
Schauen wir uns noch einmal dasselbe Beispiel an. Es folgt dieAndersenFamily Dokument.
{
"id": "AndersenFamily",
"lastName": "Andersen",
"parents": [
{ "firstName": "Thomas", "relationship": "father" },
{ "firstName": "Mary Kay", "relationship": "mother" }
],
"children": [
{
"firstName": "Henriette Thaulow",
"gender": "female",
"grade": 5,
"pets": [ { "givenName": "Fluffy", "type": "Rabbit" } ]
}
],
"location": { "state": "WA", "county": "King", "city": "Seattle" },
"isRegistered": true
}
Es folgt die SmithFamily Dokument.
{
"id": "SmithFamily",
"parents": [
{ "familyName": "Smith", "givenName": "James" },
{ "familyName": "Curtis", "givenName": "Helen" }
],
"children": [
{
"givenName": "Michelle",
"gender": "female",
"grade": 1
},
{
"givenName": "John",
"gender": "male",
"grade": 7,
"pets": [
{ "givenName": "Tweetie", "type": "Bird" }
]
}
],
"location": {
"state": "NY",
"county": "Queens",
"city": "Forest Hills"
},
"isRegistered": true
}
Es folgt die WakefieldFamily Dokument.
{
"id": "WakefieldFamily",
"parents": [
{ "familyName": "Wakefield", "givenName": "Robin" },
{ "familyName": "Miller", "givenName": "Ben" }
],
"children": [
{
"familyName": "Merriam",
"givenName": "Jesse",
"gender": "female",
"grade": 6,
"pets": [
{ "givenName": "Charlie Brown", "type": "Dog" },
{ "givenName": "Tiger", "type": "Cat" },
{ "givenName": "Princess", "type": "Cat" }
]
},
{
"familyName": "Miller",
"givenName": "Lisa",
"gender": "female",
"grade": 3,
"pets": [
{ "givenName": "Jake", "type": "Snake" }
]
}
],
"location": { "state": "NY", "county": "Manhattan", "city": "NY" },
"isRegistered": false
}
In der obigen AbfrageSELECT * FROM c”Gibt an, dass die gesamte Families-Sammlung die Quelle für die Aufzählung ist.
Unterdokumente
Die Quelle kann auch auf eine kleinere Teilmenge reduziert werden. Wenn wir in jedem Dokument nur einen Teilbaum abrufen möchten, kann der Teilstamm zur Quelle werden, wie im folgenden Beispiel gezeigt.
Wenn wir die folgende Abfrage ausführen -
SELECT * FROM Families.parents
Die folgenden Unterdokumente werden abgerufen.
[
[
{
"familyName": "Wakefield",
"givenName": "Robin"
},
{
"familyName": "Miller",
"givenName": "Ben"
}
],
[
{
"familyName": "Smith",
"givenName": "James"
},
{
"familyName": "Curtis",
"givenName": "Helen"
}
],
[
{
"firstName": "Thomas",
"relationship": "father"
},
{
"firstName": "Mary Kay",
"relationship": "mother"
}
]
]
Als Ergebnis dieser Abfrage können wir sehen, dass nur die übergeordneten Unterdokumente abgerufen werden.