Mit einer Abfrage werden von Firestore im Datastore-Modus Entitäten abgerufen, die bestimmte Bedingungen erfüllen.
Die Abfrage wird für Entitäten einer bestimmten Art ausgeführt. Sie kann Filter für die Attributwerte, Schlüssel und Ancestors der Entitäten angeben sowie null oder mehr Entitäten als Ergebnisse zurückgeben. Außerdem können mit einer Abfrage Sortierfolgen festgelegt werden, um die Ergebnisse nach ihren Attributwerten zu sortieren. Die Ergebnisse umfassen alle Entitäten mit mindestens einem Wert für jedes Attribut, das in den Filtern und Sortierfolgen angegeben wird, und deren Attributwerte alle angegebenen Filterkriterien erfüllen. Die Abfrage kann ganze Entitäten, projizierte Entitäten oder Entitätsschlüssel zurückgeben.
Eine typische Abfrage umfasst:
- Eine Entitätsart, auf die die Abfrage angewendet wird
- Null oder mehr Filter basierend auf den Attributwerten, Schlüsseln und Ancestors der Entitäten
- Null oder mehr Sortierfolgen zur Anordnung der Ergebnisse
Bei der Ausführung ruft die Abfrage alle Entitäten der angegebenen Art ab, die alle Filter erfüllen, und sortiert sie in der angegebenen Reihenfolge. Abfragen haben nur Leseberechtigungen.
Hinweis: Um Arbeitsspeicher zu sparen und die Leistung zu verbessern, sollte eine Abfrage, wenn möglich, eine Höchstzahl zurückgegebener Ergebnisse angeben.
Bei jeder Abfrage werden die Ergebnisse anhand eines oder mehrerer Indexe berechnet, die Entitätsschlüssel in einer von den Indexattributen vorgegebenen Reihenfolge und optional auch die Ancestors der Entität enthalten. Diese Indexe werden inkrementell aktualisiert, um die von den Anwendungen durchgeführten Änderungen an den Entitäten widerzuspiegeln und so ohne weitere Berechnung exakte Ergebnisse für alle Abfragen zur Verfügung zu stellen.
Der indexbasierte Abfragemechanismus unterstützt ein breites Spektrum an Abfragen und ist für die meisten Anwendungen geeignet. Allerdings werden einige in anderen Datenbanktechnologien übliche Abfragetypen nicht vom Abfragemodul im Datastore-Modus unterstützt, insbesondere Join- und Aggregate-Abfragen. Informationen zu den Einschränkungen bei Abfragen im Datastore-Modus finden Sie unter Beschränkungen bei Abfragen.
Abfrageschnittstelle
Im Folgenden finden Sie ein einfaches Beispiel für eine Abfrage einer Datenbank im Datastore-Modus. Dabei werden alle noch nicht erledigten Aufgaben mit einer Priorität größer als oder gleich 4 in absteigender Reihenfolge sortiert nach Priorität abgerufen:
C#
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore C# API.
Go
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Go API.
Java
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Java API.
Node.js
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Node.js API.
PHP
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore PHP API.
Python
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Python API.
Ruby
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Ruby API.
GQL
SELECT * FROM Task WHERE done = FALSE AND priority >= 4 ORDER BY priority DESC
So wird eine Abfrage ausgeführt:
C#
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore C# API.
Go
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Go API.
Java
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Java API.
Node.js
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Node.js API.
PHP
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore PHP API.
Python
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Python API.
Ruby
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Ruby API.
GQL
Nicht zutreffendAbfragestruktur
Für eine Abfrage können ein Entitätstyp, null oder mehr Filter sowie null oder mehr Sortierfolgen angegeben werden.
Filter
Die Filter einer Abfrage legen Einschränkungen für die Attribute, Schlüssel und Ancestors der abzurufenden Entitäten fest.
Attributfilter
In einem Attributfilter wird Folgendes angegeben:
- Ein Attributname
- Ein Vergleichsoperator
- Ein Attributwert
In diesem Beispiel werden Aufgabenentitäten zurückgegeben, die als nicht erledigt markiert sind:
C#
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore C# API.
Go
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Go API.
Java
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Java API.
Node.js
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Node.js API.
PHP
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore PHP API.
Python
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Python API.
Ruby
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Ruby API.
GQL
SELECT * FROM Task WHERE done = FALSE
Der Attributwert muss von der Anwendung angegeben werden; er kann keine anderen Attribute referenzieren oder anhand anderer Attribute berechnet werden. Eine Entität erfüllt den Filter, wenn sie ein Attribut mit dem angegebenen Namen enthält, dessen Wert dem im Filter angegebenen Wert in der vom Vergleichsoperator beschriebenen Weise entspricht. Wenn das Attribut mit dem angegebenen Namen einen Arraywert enthält, erfüllt die Entität den Filter, wenn einer der Werte dem in dem Filter angegebenen Wert in der vom Vergleichsoperator beschriebenen Weise entspricht.
Einer der folgenden Vergleichsoperatoren kann verwendet werden:
Operator | Bedeutung |
---|---|
EQUAL |
Gleich |
LESS_THAN |
Kleiner als |
LESS_THAN_OR_EQUAL |
Kleiner als oder gleich |
GREATER_THAN |
Größer als |
GREATER_THAN_OR_EQUAL |
Größer als oder gleich |
NOT_EQUAL |
Ungleich |
IN |
Mitglied der angegebenen Liste Entspricht einem der Werte in einer angegebenen Liste. |
NOT_IN |
Kein Mitglied der angegebenen Liste. Keine Übereinstimmung mit den Werten in der angegebenen Liste. |
Zusammengesetzte Filter
Ein zusammengesetzter Filter besteht aus mehr als einem Attributfilter. Dieses Beispiel gibt Aufgabenentitäten zurück, die als nicht erledigt markiert sind und eine Priorität von 4 haben:
C#
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore C# API.
Go
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Go API.
Java
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Java API.
Node.js
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Node.js API.
PHP
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore PHP API.
Python
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Python API.
Ruby
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Ruby API.
GQL
SELECT * FROM Task WHERE done = FALSE AND priority = 4
Firestore im Datastore-Modus unterstützt nativ nur die Kombination aus Filtern mit dem Operator AND
.
Schlüsselfilter
Zum Filtern mit dem Wert eines Entitätsschlüssels verwenden Sie das spezielle Attribut __key__
.
C#
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore C# API.
Go
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Go API.
Java
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Java API.
Node.js
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Node.js API.
PHP
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore PHP API.
Python
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Python API.
Ruby
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Ruby API.
GQL
SELECT * FROM Task WHERE __key__ > KEY(Task, 'someTask')
Bei einem Vergleich auf Ungleichheit werden die Schlüssel nach den folgenden Kriterien in folgender Reihenfolge angeordnet:
- Ancestor-Pfad
- Entitätstyp
- Kennzeichnung (Schlüsselname oder numerische ID)
Elemente des Ancestor-Pfads werden ähnlich verglichen: nach Art (String), dann nach Schlüsselname oder numerischer ID. Arten und Schlüsselnamen sind Strings und werden nach Bytewert sortiert; numerische IDs sind ganze Zahlen und werden numerisch sortiert. Wenn Entitäten mit derselben übergeordneten Entität und derselben Art eine Mischung aus Schlüsselnamen-Strings und numerischen IDs verwenden, stehen die Entitäten mit numerischen IDs vor den Entitäten mit Schlüsselnamen.
Abfragen auf Schlüssel verwenden Indexe genau wie Abfragen auf Attribute und erfordern in den gleichen Fällen benutzerdefinierte Indexe, mit einigen Ausnahmen: Ungleichheitsfilter oder eine aufsteigende Sortierfolge für Schlüssel erfordern keinen benutzerdefinierten Index, eine absteigende Sortierfolge bei Schlüsseln hingegen schon. Wie bei allen Abfragen erstellt der Entwicklungsserver entsprechende Einträge in der Indexkonfigurationsdatei, wenn eine Abfrage, die einen benutzerdefinierten Index erfordert, in der Entwicklungsumgebung verwendet wird.
Sortierfolgen
Eine Abfrage-Sortierfolge gibt Folgendes an:
- Einen Attributnamen
- Eine Sortierfolge (aufsteigend oder absteigend); standardmäßig ist die Sortierfolge aufsteigend
Dieses Beispiel sortiert Aufgabenentitäten nach Erstellungszeit in aufsteigender Reihenfolge:
C#
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore C# API.
Go
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Go API.
Java
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Java API.
Node.js
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Node.js API.
PHP
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore PHP API.
Python
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Python API.
Ruby
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Ruby API.
GQL
SELECT * FROM Task ORDER BY created ASC
Dieses Beispiel sortiert Aufgabenentitäten nach Erstellungszeit in absteigender Reihenfolge:
C#
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore C# API.
Go
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Go API.
Java
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Java API.
Node.js
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Node.js API.
PHP
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore PHP API.
Python
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Python API.
Ruby
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Ruby API.
GQL
SELECT * FROM Task ORDER BY created DESC
Wenn eine Abfrage mehrere Sortierfolgen enthält, werden diese in der angegebenen Abfolge angewendet. Im folgenden Beispiel wird zuerst nach absteigender Priorität und dann nach aufsteigender Erstellungszeit sortiert:
C#
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore C# API.
Go
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Go API.
Java
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Java API.
Node.js
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Node.js API.
PHP
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore PHP API.
Python
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Python API.
Ruby
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Ruby API.
GQL
SELECT * FROM Task ORDER BY priority DESC, created ASC
Wenn keine Sortierfolgen angegeben sind, werden die Ergebnisse in der Reihenfolge zurückgegeben, in der sie aus dem Datastore-Modus abgerufen werden.
Hinweis: Aufgrund der Art, in der der Datastore-Modus Abfragen ausführt, muss Folgendes beachtet werden: Wenn eine Abfrage Ungleichheitsfilter bei einem Attribut und Sortierfolgen bei anderen Attributen angibt, muss das Attribut, das in Ungleichheitsfiltern verwendet wird, vor den anderen Attributen angeordnet werden.
Besondere Abfragetypen
Einige spezifische Abfragetypen müssen besonders erwähnt werden:
!= Not equal
Verwenden Sie den Operator „Ungleich“ (!=
), um Entitäten zurückzugeben, bei denen die angegebene Property vorhanden ist und nicht mit dem Vergleichswert übereinstimmt.
C#
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore C# API.
Nicht zutreffendGo
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Go API.
Nicht zutreffendJava
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Java API.
Node.js
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Node.js API.
Nicht zutreffendPHP
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore PHP API.
Nicht zutreffendPython
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Python API.
Ruby
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Ruby API.
Nicht zutreffendGQL
SELECT * FROM Task WHERE category != 'work'
Diese Abfrage gibt jede Task
-Entität zurück, bei der das Attribut category
vorhanden ist. Es wird ein anderer Wert als Work
festgelegt.
Diese Abfrage gibt keine Entitäten zurück, bei denen die Property category
nicht vorhanden ist. Ungleiche (!=
) und NOT_IN
-Abfragen schließen Entitäten aus, bei denen die angegebene Property nicht vorhanden ist oder in denen die Property von der Indexierung ausgeschlossen ist. Ein Attribut ist vorhanden, wenn es auf einen beliebigen Wert gesetzt ist, einschließlich eines leeren Strings oder eines null
.
Beschränkungen
Beachten Sie folgende Einschränkungen für !=
-Abfragen:
- Nur Entitäten, bei denen die angegebene Property vorhanden ist, können mit der Abfrage übereinstimmen.
NOT_IN
und!=
können nicht in zusammengesetzten Abfragen kombiniert werden.- Bei einer zusammengesetzten Abfrage müssen Ungleichheitsfilter (
<
,<=
,>
,>=
,!=
,NOT_IN
) alle auf dasselbe Attribut filtern.
IN
Mit dem Operator IN
kannst du bis zu zehn Gleichheitszeichen (==
) für dieselbe Property mit einem logischen OR
kombinieren. Eine IN
-Abfrage gibt Entitäten zurück, bei denen die angegebene Property mit einem der Vergleichswerte übereinstimmt.
C#
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore C# API.
Nicht zutreffendGo
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Go API.
Nicht zutreffendJava
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Java API.
Node.js
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Node.js API.
Nicht zutreffendPHP
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore PHP API.
Nicht zutreffendPython
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Python API.
Ruby
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Ruby API.
Nicht zutreffendGQL
SELECT * FROM Task WHERE tag IN ARRAY('learn', 'study')
Diese Abfrage gibt jede Task
-Entität zurück, bei der die tag
-Property auf learn
oder study
festgelegt ist. Dazu gehören auch Task
-Entitäten, bei denen das Attribut tag
nur einen dieser Werte enthält.
NOT_IN
Mit dem Operator NOT_IN
kannst du bis zu zehn nicht-gleiche (!=
)-Klauseln in derselben Property mit einem logischen AND
kombinieren. Eine NOT_IN
-Abfrage gibt Entitäten zurück, bei denen die angegebene Property vorhanden ist und mit keinem der Vergleichswerte übereinstimmt.
C#
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore C# API.
Nicht zutreffendGo
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Go API.
Nicht zutreffendJava
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Java API.
Node.js
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Node.js API.
Nicht zutreffendPHP
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore PHP API.
Nicht zutreffendPython
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Python API.
Ruby
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Ruby API.
Nicht zutreffendGQL
SELECT * FROM Task WHERE category NOT IN ARRAY('work', 'chores', 'school')
Diese Abfrage gibt keine Entitäten zurück, bei denen die Entität category
nicht vorhanden ist. Ungleiche (!=
) und NOT_IN
-Abfragen schließen Entitäten aus, bei denen die angegebene Property nicht vorhanden ist. Ein Attribut ist vorhanden, wenn es auf einen beliebigen Wert gesetzt ist, einschließlich eines leeren Strings oder eines null
.
Beschränkungen
Beachten Sie folgende Einschränkungen für NOT_IN
-Abfragen:
- Nur Entitäten, bei denen die angegebene Property vorhanden ist, können mit der Abfrage übereinstimmen.
NOT_IN
und!=
können nicht in zusammengesetzten Abfragen kombiniert werden.- In einer zusammengesetzten Abfrage müssen alle Ungleichheitsfilter (
<
,<=
,>
,>=
,!=
,NOT_IN
) für dieselbe Property filtern.
Ancestor-Abfragen
Eine Ancestor-Abfrage begrenzt ihre Ergebnisse auf die angegebene Entität und deren untergeordnete Entitäten. Dieses Beispiel gibt alle Aufgabenentitäten zurück, die die angegebene TaskList-Entität als Ancestor haben:
C#
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore C# API.
Go
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Go API.
Java
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Java API.
Node.js
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Node.js API.
PHP
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore PHP API.
Python
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Python API.
Ruby
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Ruby API.
GQL
SELECT * FROM Task WHERE __key__ HAS ANCESTOR KEY(TaskList, 'default')
Typlose Abfragen
Eine Abfrage ohne Typ und ohne Ancestor ruft alle Entitäten einer Anwendung aus dem Datastore-Modus ab. Derartige typlose Abfragen können keine Filter oder Sortierfolgen für Attributwerte enthalten. Sie können jedoch mit Entitätsschlüsseln filtern und Ancestor-Filter verwenden. Sie können Schlüsselfilter verwenden, indem Sie __key__
als Attributnamen angeben:
C#
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore C# API.
Go
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Go API.
Java
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Java API.
Node.js
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Node.js API.
PHP
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore PHP API.
Python
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Python API.
Ruby
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Ruby API.
GQL
SELECT * WHERE __key__ > KEY(Task, 'someTask')
Projektionsabfragen
Die meisten Abfragen geben ganze Entitäten als Ergebnisse zurück. Häufig benötigt eine Anwendung jedoch nur einige wenige Attribute einer Entität. Mit Projektionsabfragen können Sie nur genau die Attribute einer Entität abfragen, die Sie wirklich benötigen, und zwar mit einer geringeren Latenz und niedrigeren Kosten als beim Abrufen der gesamten Entität.
Bei Projektionsabfragen müssen die angegebenen Attribute indexiert sein.
Ausschließlich schlüsselbasierte Abfragen
Eine ausschließlich schlüsselbasierte Abfrage (ein Typ der Projektionsabfrage) gibt nur die Schlüssel der Ergebnisentitäten anstelle der Entitäten selbst zurück, mit einer niedrigeren Latenz und niedrigeren Kosten als beim Abruf ganzer Entitäten.
Häufig ist es wirtschaftlicher, zuerst eine ausschließlich schlüsselbasierte Abfrage durchzuführen und dann einen Teil der Entitäten aus den Ergebnissen abzurufen als eine allgemeine Abfrage auszuführen, die unter Umständen mehr Entitäten abruft, als tatsächlich benötigt werden.
So erstellen Sie eine ausschließlich schlüsselbasierte Abfrage:
C#
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore C# API.
Go
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Go API.
Java
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Java API.
Node.js
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Node.js API.
PHP
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore PHP API.
Python
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Python API.
Ruby
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Ruby API.
GQL
SELECT __key__ FROM Task
Eine ausschließlich schlüsselbasierte Abfrage ist ein kleiner Vorgang und zählt nur als ein einzelner Entitätslesevorgang für die Abfrage selbst.
Projektionen
Projektionsabfragen ähneln SQL-Abfragen der folgenden Form:
SELECT priority, percent_complete FROM Task
Sie können alle Filter- und Sortierfunktionen für Standardabfragen verwenden. Beachten Sie jedoch diese Einschränkungen.
Die Beispiel-SQL-Abfrage gibt gekürzte Ergebnisse zurück, wobei nur die angegebenen Attribute priority
und percent_complete
mit Werten gefüllt sind. Alle anderen Attribute enthalten keine Daten. So erstellen Sie die Abfrage als Projektionsabfrage:
C#
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore C# API.
Go
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Go API.
Java
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Java API.
Node.js
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Node.js API.
PHP
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore PHP API.
Python
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Python API.
Ruby
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Ruby API.
GQL
SELECT priority, percent_complete FROM Task
Hier wird dargestellt, wie die Projektionsabfrage ausgeführt wird:
C#
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore C# API.
Go
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Go API.
Java
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Java API.
Node.js
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Node.js API.
PHP
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore PHP API.
Python
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Python API.
Ruby
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Ruby API.
GQL
Nicht zutreffendEine Projektionsabfrage ohne die Klausel distinct on
ist ein kleiner Vorgang und zählt nur als einzelner Entitätslesevorgang für die Abfrage selbst.
Gruppierung
Projektionsabfragen können mit der Klausel distinct on
gewährleisten, dass nur das erste Ergebnis für jede einzelne Kombination von Werten für die angegebenen Attribute zurückgegeben wird. Dadurch wird für Entitäten mit denselben Werten in den projizierten Attributen nur das erste Ergebnis zurückgegeben.
C#
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore C# API.
Go
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Go API.
Java
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Java API.
Node.js
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Node.js API.
PHP
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore PHP API.
Python
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Python API.
Ruby
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Ruby API.
GQL
SELECT DISTINCT ON (category) category, priority FROM Task ORDER BY category, priority
Arraywerte
Im Datastore-Modus wird jeder eindeutige Array-Attributwert einmal pro Index indexiert. Verwenden Sie daher einen Gleichheitsfilter, wenn Sie abfragen möchten, ob ein Array einen bestimmten Wert enthält.
Beachten Sie Folgendes, wenn die Abfrage Attribute mit Arraywerten enthält.
Ungleichheitsfilter
Aufgrund der Art der Indexierung können Entitäten mit mehreren Werten für dasselbe Attribut gelegentlich auf unerwartete und überraschende Weise mit Abfragefiltern und Sortierfolgen interagieren.
Wenn eine Abfrage mehrere Ungleichheitsfilter für ein bestimmtes Attribut enthält, stimmt eine Entität nur dann mit der Abfrage überein, wenn mindestens einer der individuellen Werte des Attributs alle Filter erfüllt. Wenn beispielsweise eine Entität vom Typ Task
die Werte fun
und programming
für das Attribut tag
hat, stimmt sie nicht mit der Abfrage überein:
C#
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore C# API.
Go
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Go API.
Java
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Java API.
Node.js
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Node.js API.
PHP
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore PHP API.
Python
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Python API.
Ruby
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Ruby API.
GQL
SELECT * FROM Task WHERE tag > 'learn' AND tag < 'math'
Jeder tag
-Wert der Entität erfüllt einen der Filter, aber keiner der Einzelwerte erfüllt beide Filter.
Mehrere Gleichheitsfilter
Im Gegensatz zu Ungleichheitsfiltern können mehrere Gleichheitsfilter verwendet werden, um Entitäten abzufragen, die einen Satz von Werten enthalten. Beispiel: Dieselbe Entität erfüllt die Abfrage
C#
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore C# API.
Go
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Go API.
Java
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Java API.
Node.js
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Node.js API.
PHP
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore PHP API.
Python
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Python API.
Ruby
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Ruby API.
GQL
SELECT * FROM Task WHERE tag = 'fun' AND tag = 'programming'
Dabei erfüllt keiner der individuellen tag
-Werte der Entität beide Filterbedingungen.
Sortierfolge
Genauso ist die Sortierfolge für mehrwertige Attribute ungewöhnlich. Weil derartige Attribute im Index jeweils einmal für jeden eindeutigen Wert auftreten, bestimmt der erste Wert im Index die Sortierfolge der Entität.
Wenn kein mehrwertiges Attribut in einem Filter verwendet wird:
- und die Abfrageergebnisse in aufsteigender Reihenfolge nach dem Attribut sortiert werden, wird der kleinste Wert des Attributs für die Sortierung verwendet.
- und die Abfrageergebnisse in absteigender Reihenfolge nach dem Attribut sortiert werden, wird der größte Wert des Attributs für die Sortierung verwendet.
- haben weder andere Werte noch die Anzahl von Werten Einfluss auf die Sortierfolge.
Dies hat die ungewöhnliche Folge, dass eine Entität mit den Attributwerten 1
und 9
in aufsteigender und absteigender Reihenfolge vor einer Entität mit den Werten 4
, 5
, 6
und 7
steht.
Wenn ein mehrwertiges Attribut in einem Gleichheitsfilter verwendet wird, wird jede Sortierfolge für dieses Attribut ignoriert.
Wenn ein Attribut mit mehreren Werten in einem Ungleichheits- oder NOT_IN
-Filter verwendet wird:
- und die Ergebnisse in aufsteigender Reihenfolge nach dem Attribut sortiert werden, wird der kleinste Wert, der alle Ungleichheitsfilter der Abfrage erfüllt, für die Sortierung verwendet.
- und die Ergebnisse in absteigender Reihenfolge nach dem Attribut sortiert werden, wird der größte Wert, der alle Ungleichheitsfilter der Abfrage erfüllt, für die Sortierung verwendet.
Hinweis: Wenn sich ein Satz Ungleichheitsfilter für ein Attribut in einen Gleichheitsfilter übersetzen lässt, z. B.:
WHERE tag >= 'math' AND tag <= 'math'
dann wird jede Sortierfolge für dieses Attribut ignoriert, weil die Filter wie der entsprechende Gleichheitsfilter ausgewertet werden:
WHERE tag = 'math'
Projektionen und arraywertige Attribute
Die Projektion eines Attributs mit Arraywerten füllt nicht alle Werte für dieses Attribut aus. Stattdessen wird für jede eindeutige Kombination von projizierten Werten, die mit der Abfrage übereinstimmt, eine separate Entität zurückgegeben. Angenommen, Sie haben eine Entität der Art Task
mit den beiden mehrwertigen Attributen tag
und collaborators
:
C#
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore C# API.
Go
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Go API.
Java
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Java API.
Node.js
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Node.js API.
PHP
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore PHP API.
Python
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Python API.
Ruby
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Ruby API.
GQL
Nicht zutreffenddann gibt die Projektionsabfrage
SELECT tag, collaborators FROM Task WHERE collaborators < 'charlie'
vier Entitäten mit den folgenden Wertekombinationen zurück:
tag
= 'fun'
, collaborators
= 'alice'
tag
= 'fun'
, collaborators
= 'bob'
tag
= 'programming'
, collaborators
= 'alice'
tag
= 'programming'
, collaborators
= 'bob'
Cursors, Grenzwerte und Offsets
Sie können ein Limit für die Abfrage festlegen, um die Höchstzahl von Ergebnissen zu kontrollieren, die in einem Stapel zurückgegeben werden. Im folgenden Beispiel werden maximal fünf Aufgabenentitäten zurückgegeben:
C#
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore C# API.
Go
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Go API.
Java
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Java API.
Node.js
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Node.js API.
PHP
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore PHP API.
Python
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Python API.
Ruby
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Ruby API.
GQL
SELECT * FROM Task LIMIT 5
Mit Abfrage-Cursors kann eine Anwendung die Ergebnisse einer Abfrage in bequemen Stapeln ohne den Overhead eines Abfrage-Offsets abrufen. Nach Ausführung eines Abfragevorgangs kann die Anwendung einen Cursor abrufen, bei dem es sich um einen intransparenten Bytestring handelt, der die Indexposition des letzten abgerufenen Ergebnisses markiert. Die Anwendung kann diesen String speichern (beispielsweise in der Datenbank im Datastore-Modus, einem Cache oder auf einer Webseite als base-64-codierten HTTP-GET
- oder -POST
-Parameter) und den Cursor dann als Ausgangspunkt für einen nachfolgenden Abrufvorgang verwenden. So wird der nächste Stapel mit Ergebnissen ab dem Punkt abgerufen, an dem der vorherige Abrufvorgang beendet wurde. Ein Abruf kann auch einen Endcursor angeben, um den Umfang der zurückgegebenen Ergebnismenge zu begrenzen.
Im folgenden Beispiel wird die Verwendung von Cursors für die Paginierung demonstriert.
C#
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore C# API.
Go
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Go API.
Java
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Java API.
Node.js
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Node.js API.
PHP
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore PHP API.
Python
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Python API.
Ruby
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Ruby API.
GQL
Nicht zutreffendDatenbanken im Datastore-Modus unterstützen zwar ganzzahlige Offsets, aber Sie sollten diese nach Möglichkeit nicht einsetzen. Verwenden Sie stattdessen Cursors. Bei Verwendung eines Offsets wird nur vermieden, dass die übersprungenen Entitäten an die Anwendung zurückgegeben werden, diese Entitäten werden jedoch dennoch intern abgerufen. Die übersprungenen Entitäten wirken sich auf die Latenz der Abfrage aus, und Lesevorgänge, die für deren Abruf erforderlich sind, werden für Ihre Anwendung in Rechnung gestellt. Wenn Cursors anstelle von Offsets verwendet werden, können Sie diese Kosten vermeiden.
Einschränkungen von Cursors
Cursors unterliegen den folgenden Einschränkungen:
- Ein Cursor kann nur von demselben Projekt, das die ursprüngliche Abfrage durchgeführt hat, und nur zur Fortsetzung derselben Abfrage verwendet werden. Ergebnisse können mit einem Cursor nur abgerufen werden, wenn dieselbe Abfrage eingerichtet wird, aus der er ursprünglich generiert wurde.
- Wenn eines der folgenden Elemente geändert wird, kann ein Cursor weiter für nachfolgende Abrufvorgänge verwendet werden:
- Startcursor
- Endcursor
- Offset
- Limit
- Wenn eines der folgenden Elemente geändert wird, kann ein Cursor nicht mehr für nachfolgende Abrufvorgänge verwendet werden:
- Projektion
- Typ
- Ancestor
- Filter
- "distinct on"-Klausel
- Sortierfolge
Dies gilt nicht, wenn die endgültige Sortierfolge der ursprünglichen Abfrage nach
__key__
erfolgte. In diesem Fall können Sie den Cursor in einer umgekehrten Abfrage verwenden. Dabei handelt es sich um die ursprüngliche Abfrage, bei der jede Sortierfolge umgekehrt wird. Die umgekehrte Abfrage kann Startcursor, Endcursor, Offset und Beschränkung ändern.
- Cursors funktionieren häufig nicht wie erwartet bei Abfragen, die einen Ungleichheitsfilter oder eine Sortierfolge bei einem Attribut mit mehreren Werten verwenden. Die Deduplizierungslogik für derartige mehrwertige Attribute bleibt zwischen Abrufvorgängen nicht bestehen, weshalb dasselbe Ergebnis mehr als einmal zurückgegeben werden kann.
- In neuen Versionen des Datastore-Modus können interne Implementierungsdetails abweichen, wodurch Cursors ungültig werden, die auf ihnen beruhen. Wenn eine Anwendung versucht, einen Cursor zu verwenden, der nicht mehr gültig ist, löst Firestore im Datastore-Modus eine Ausnahme aus.
Cursors und Datenaktualisierungen
Der Cursor stellt die Position in der Ergebnisliste nach dem letzten zurückgegebenen Ergebnis dar. Ein Cursor ist keine relative Position in der Liste (er ist kein Offset); er ist vielmehr eine Markierung, zu der eine Datenbank im Datastore-Modus springen kann, wenn ein Indexscan nach Ergebnissen gestartet wird. Wenn sich die Ergebnisse während der Verwendung eines Cursors ändern, berücksichtigt die Abfrage nur die Änderungen, die in den Ergebnissen nach der Position des Cursors auftreten. Wenn für die Abfrage ein neues Ergebnis hinzukommt, das aber vor der Position des Cursors steht, wird es beim Abrufen der Ergebnisse ab der Position des Cursors nicht zurückgegeben. Dasselbe gilt, wenn eine Entität kein Ergebnis einer Abfrage mehr ist, aber vor der Position des Cursors enthalten war. In diesem Fall ändern sich die Ergebnisse nach der Position des Cursors nicht. Wenn das letzte zurückgegebene Ergebnis aus der Ergebnismenge entfernt wird, kann der Cursor trotzdem weiterhin die Position des nächsten Ergebnisses bestimmen.
Beim Abrufen von Abfrageergebnissen können Sie einen Start- und einen Endcursor einsetzen, um fortlaufende Ergebnisse zurückzugeben. Wenn Sie beim Abrufen der Ergebnisse einen Start- und einen Endcursor verwenden, haben Sie allerdings trotzdem keine Garantie dafür, dass die Größe der Ergebnisse mit der beim Generieren der Cursors vorliegenden Größe übereinstimmt. Das liegt daran, dass es passieren kann, dass Entitäten in der Datenbank zwischen dem Zeitpunkt der Generierung der Cursors und deren Verwendung in einer Abfrage hinzugefügt oder gelöscht werden.
Beschränkungen bei Abfragen
Die Art des Indexabfrageverfahrens führt zu bestimmten Beschränkungen bei den Funktionen einer Abfrage. Abfragen im Datastore-Modus unterstützen weder Teilstring-Übereinstimmungen noch Übereinstimmungen, bei denen die Groß-/Kleinschreibung nicht beachtet werden muss, und auch keine sogenannten Volltextsuchvorgänge. Der Operator OR
wird nicht nativ unterstützt, aber einige Clientbibliotheken unterstützen möglicherweise zusätzlich zum Datastore-Modus. Außerdem:
Entitäten, bei denen ein in der Abfrage benanntes Attribut fehlt, werden ignoriert
Entitäten desselben Typs haben nicht unbedingt dieselben Attribute. Damit eine Entität als Abfrageergebnis genutzt werden kann, muss sie einen Wert (kann null sein) für jedes Attribut haben, das in den Filtern und Sortierfolgen der Abfrage benannt wird. Wenn die Entität diese Voraussetzung nicht erfüllt, wird sie nicht in die Indexe für die Ausführung der Abfrage aufgenommen. Sie ist dann auch nicht in den Ergebnissen enthalten.
Filterung nach nicht indexierten Attributen gibt keine Ergebnisse zurück
Eine Abfrage kann keine Attributwerte finden, die nicht indexiert sind, und kann nicht nach derartigen Attributen sortieren. Eine detaillierte Erläuterung von nicht indexierten Attributen finden Sie im Abschnitt Nicht indexierte Attribute.
Ungleichheitsfilter sind auf maximal ein Attribut begrenzt
Damit nicht der gesamte Index gescannt werden muss, stützt sich der Abfragemechanismus auf alle möglichen Ergebnisse einer Abfrage im Index.
Um dieser Einschränkung zu entsprechen, darf in einer einzelnen Abfrage keine Ungleichheitsvergleiche (LESS_THAN
, LESS_THAN_OR_EQUAL
, GREATER_THAN
, GREATER_THAN_OR_EQUAL
, NOT_EQUAL
, NOT_IN
) für mehr als ein Attribut unabhängig von ihren Filtern verwendet werden. Die folgende Abfrage ist beispielsweise gültig, da beide Ungleichheitsfilter für dasselbe Attribut gelten:
C#
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore C# API.
Go
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Go API.
Java
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Java API.
Node.js
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Node.js API.
PHP
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie hier. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore PHP API.