Une requête permet de récupérer des entités qui répondent à un ensemble déterminé de conditions, depuis Firestore en mode Datastore.
La requête s'exécute sur des entités d'un genre donné. Elle peut spécifier des filtres sur les valeurs de propriété, les clés et les ancêtres des entités, et peut renvoyer zéro, une ou plusieurs entités en tant que résultats. Une requête peut également spécifier des ordres de tri pour séquencer les résultats en fonction de leurs valeurs de propriété. Les résultats incluent toutes les entités qui ont au moins une valeur pour chaque propriété nommée dans les filtres et les ordres de tri, et dont les valeurs de propriété répondent à tous les critères de filtre spécifiés. La requête peut renvoyer des entités entières, des entités projetées ou simplement des clés d'entité.
Une requête type comprend les éléments suivants :
- Un genre d'entité auquel s'applique la requête.
- Zéro, un ou plusieurs filtres basés sur les valeurs de propriété, les clés et les ancêtres des entités.
- Zéro, un ou plusieurs ordres de tri, pour séquencer les résultats.
Lorsque la requête est exécutée, elle récupère toutes les entités d'un genre donné qui satisfont à tous les filtres définis, en les triant dans l'ordre spécifié. Les requêtes s'exécutent en lecture seule.
Remarque : Pour économiser de la mémoire et améliorer les performances, une requête doit, dans la mesure du possible, spécifier une limite concernant le nombre de résultats renvoyés.
Chaque requête calcule ses résultats au moyen d'un ou de plusieurs index qui contiennent des clés d'entité dans une séquence spécifiée par leurs propriétés et, éventuellement, par les ancêtres de l'entité. Les index sont mis à jour de manière incrémentielle pour refléter les modifications apportées par l'application à ses entités, afin que les résultats corrects de toutes les requêtes soient disponibles sans qu'aucun calcul supplémentaire soit nécessaire.
Le mécanisme de requête basé sur les index permet l'exécution d'un large éventail de requêtes et convient à la plupart des applications. Toutefois, il n'est pas compatible avec certains genres de requêtes couramment rencontrés dans d'autres technologies de base de données. Plus précisément, les requêtes de jointure et d'agrégation ne sont pas acceptées dans le moteur de requêtes en mode Datastore. Pour connaître les limites relatives aux requêtes en mode Datastore, consultez la section Restrictions au niveau des requêtes ci-dessous.
Interface de requête
Voici un exemple basique d'émission d'une requête sur une base de données en mode Datastore. La requête récupère les tâches qui ne sont pas encore terminées et dont la priorité est supérieure ou égale à 4, et les trie par ordre décroissant de priorité :
C#
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage C#.
Go
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Go.
Java
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Java.
Node.js
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour en savoir plus, consultez la documentation de référence de l'API Cloud Datastore en langage Node.js.
PHP
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage PHP.
Python
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Python.
Ruby
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Ruby.
GQL
SELECT * FROM Task WHERE done = FALSE AND priority >= 4 ORDER BY priority DESC
Voici comment exécuter une requête :
C#
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage C#.
Go
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Go.
Java
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Java.
Node.js
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour en savoir plus, consultez la documentation de référence de l'API Cloud Datastore en langage Node.js.
PHP
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage PHP.
Python
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Python.
Ruby
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Ruby.
GQL
Non applicableStructure d'une requête
Une requête peut spécifier un genre d'entité ainsi que zéro, un ou plusieurs filtres et ordres de tri.
Filtres
Les filtres d'une requête définissent des contraintes sur les propriétés, les clés et les ancêtres des entités à récupérer.
Filtres de propriété
Un filtre de propriété spécifie
- Un nom de propriété
- Un opérateur de comparaison
- Une valeur de propriété
Cet exemple renvoie les entités "Task" marquées comme non terminées :
C#
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage C#.
Go
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Go.
Java
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Java.
Node.js
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour en savoir plus, consultez la documentation de référence de l'API Cloud Datastore en langage Node.js.
PHP
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage PHP.
Python
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Python.
Ruby
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Ruby.
GQL
SELECT * FROM Task WHERE done = FALSE
La valeur de propriété doit être fournie par l'application. Elle ne peut pas faire référence à d'autres propriétés, ni être calculée en fonction de celles-ci. Une entité satisfait au filtre si elle possède une propriété du nom donné, dont la valeur est comparable à celle spécifiée dans le filtre, de la manière décrite par l'opérateur de comparaison. Si la propriété du nom donné est une valeur de tableau, l'entité satisfait au filtre si l'une des valeurs est comparable à celle spécifiée dans le filtre, de la manière décrite par l'opérateur de comparaison.
L'opérateur de comparaison peut être l'un des suivants :
Opérateur | Signification |
---|---|
EQUAL |
Égal à |
LESS_THAN |
Inférieur à |
LESS_THAN_OR_EQUAL |
Inférieur ou égal à |
GREATER_THAN |
Supérieur à |
GREATER_THAN_OR_EQUAL |
Supérieur ou égal à |
Filtres composites
Un filtre composite est constitué de plusieurs filtres de propriété. Cet exemple renvoie les entités "Task" marquées comme non terminées et ayant une priorité de 4 :
C#
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage C#.
Go
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Go.
Java
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Java.
Node.js
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour en savoir plus, consultez la documentation de référence de l'API Cloud Datastore en langage Node.js.
PHP
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage PHP.
Python
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Python.
Ruby
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Ruby.
GQL
SELECT * FROM Task WHERE done = FALSE AND priority = 4
Firestore en mode Datastore accepte de manière native la combinaison de filtres au moyen du seul opérateur AND
.
Filtres de clé
Pour filtrer sur la valeur d'une clé d'entité, faites appel à la propriété spéciale __key__
:
C#
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage C#.
Go
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Go.
Java
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Java.
Node.js
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour en savoir plus, consultez la documentation de référence de l'API Cloud Datastore en langage Node.js.
PHP
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage PHP.
Python
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Python.
Ruby
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Ruby.
GQL
SELECT * FROM Task WHERE __key__ > KEY(Task, 'someTask')
En cas de comparaison d'inégalité, les clés sont triées selon les critères suivants, dans cet ordre :
- Chemin d'ancêtre
- Genre d'entité
- Identifiant (nom de clé ou ID numérique)
Les éléments du chemin d'ancêtre sont comparés de la même manière : par genre (chaîne), puis par nom de clé ou ID numérique. Les genres et les noms de clé sont des chaînes, et sont triés par valeur d'octet. Les ID numériques sont des entiers et sont triés par ordre numérique. Si des entités ayant le même parent et le même genre emploient une combinaison de chaînes de nom de clé et d'ID numériques, celles avec des ID numériques précèdent celles portant des noms de clé.
Les requêtes sur les clés utilisent des index, de la même façon que les requêtes sur les propriétés. En outre, elles nécessitent des index personnalisés dans les mêmes cas, à quelques exceptions près : les filtres d'inégalité ou un ordre de tri croissant sur la clé ne nécessitent pas d'index personnalisé, contrairement à un ordre de tri décroissant sur la clé. Comme pour toutes les requêtes, le serveur de développement crée les entrées appropriées dans le fichier de configuration d'index lorsqu'une requête nécessitant un index personnalisé est employée dans l'environnement de développement.
Ordres de tri
L'ordre de tri d'une requête spécifie les éléments suivants :
- Un nom de propriété.
- Un sens de tri (croissant ou décroissant). Par défaut, l'ordre de tri est croissant.
Cet exemple trie les entités "Task" par ordre croissant d'heure de création :
C#
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage C#.
Go
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Go.
Java
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Java.
Node.js
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour en savoir plus, consultez la documentation de référence de l'API Cloud Datastore en langage Node.js.
PHP
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage PHP.
Python
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Python.
Ruby
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Ruby.
GQL
SELECT * FROM Task ORDER BY created ASC
Cet exemple trie les entités "Task" par ordre décroissant d'heure de création :
C#
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage C#.
Go
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Go.
Java
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Java.
Node.js
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour en savoir plus, consultez la documentation de référence de l'API Cloud Datastore en langage Node.js.
PHP
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage PHP.
Python
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Python.
Ruby
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Ruby.
GQL
SELECT * FROM Task ORDER BY created DESC
Si une requête comprend plusieurs ordres de tri, ils sont appliqués selon la séquence spécifiée. L'exemple suivant effectue un tri d'abord par ordre décroissant de priorité, puis par ordre croissant d'heure de création :
C#
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage C#.
Go
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Go.
Java
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Java.
Node.js
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour en savoir plus, consultez la documentation de référence de l'API Cloud Datastore en langage Node.js.
PHP
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage PHP.
Python
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Python.
Ruby
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Ruby.
GQL
SELECT * FROM Task ORDER BY priority DESC, created ASC
Si aucun ordre de tri n'est spécifié, les résultats sont renvoyés dans l'ordre dans lequel ils sont récupérés depuis le mode Datastore.
Remarque : En raison de la manière dont le mode Datastore exécute les requêtes, si une requête spécifie des filtres d'inégalité sur une propriété et des ordres de tri sur d'autres propriétés, la propriété employée dans les filtres d'inégalité doit être triée avant les autres.
Types spéciaux de requêtes
Certains types spécifiques de requêtes méritent une mention particulière :
Requêtes ascendantes
Une requête ascendante limite ses résultats à l'entité spécifiée et à ses descendants. Cet exemple renvoie toutes les entités "Task" ayant pour ancêtre l'entité "TaskList" spécifiée :
C#
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage C#.
Go
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Go.
Java
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Java.
Node.js
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour en savoir plus, consultez la documentation de référence de l'API Cloud Datastore en langage Node.js.
PHP
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage PHP.
Python
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Python.
Ruby
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Ruby.
GQL
SELECT * FROM Task WHERE __key__ HAS ANCESTOR KEY(TaskList, 'default')
Requêtes sans genre
Une requête sans genre ni ancêtre récupère toutes les entités d'une application à partir du mode Datastore. Ces requêtes sans genre ne peuvent pas inclure de filtres ni d'ordres de tri sur les valeurs de propriété. Toutefois, elles peuvent filtrer sur des clés d'entité et utiliser des filtres d'ancêtres. Pour employer des filtres de clé, spécifiez __key__
comme nom de propriété :
C#
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage C#.
Go
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Go.
Java
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Java.
Node.js
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour en savoir plus, consultez la documentation de référence de l'API Cloud Datastore en langage Node.js.
PHP
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage PHP.
Python
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Python.
Ruby
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Ruby.
GQL
SELECT * WHERE __key__ > KEY(Task, 'someTask')
Requêtes de projection
La plupart des requêtes renvoient des entités entières en tant que résultats, mais, bien souvent, une application ne s'intéresse en réalité qu'à quelques-unes des propriétés d'une entité. Les requêtes de projection vous permettent de n'exécuter des requêtes que sur les propriétés spécifiques d'une entité dont vous avez réellement besoin, ce qui entraîne une latence et un coût inférieurs à ceux induits par la récupération de l'entité entière.
Les requêtes de projection nécessitent l'indexation des propriétés spécifiées.
Requêtes ne contenant que des clés
Une requête ne contenant que des clés (qui est un type de requête de projection) renvoie seulement les clés des entités de résultat, et non les entités elles-mêmes, ce qui entraîne une latence et un coût inférieurs à ceux induits par la récupération d'entités entières.
Il est souvent plus économique de commencer par ce type de requête, puis d'extraire un sous-ensemble d'entités parmi les résultats, plutôt que d'exécuter une requête générale pouvant extraire plus d'entités que nécessaire.
Voici comment créer une requête ne contenant que des clés :
C#
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage C#.
Go
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Go.
Java
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Java.
Node.js
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour en savoir plus, consultez la documentation de référence de l'API Cloud Datastore en langage Node.js.
PHP
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage PHP.
Python
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Python.
Ruby
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Ruby.
GQL
SELECT __key__ FROM Task
Une requête ne contenant que des clés est une petite opération qui est comptabilisée comme une seule lecture d'entité pour la requête elle-même.
Projections
Les requêtes de projection sont semblables aux requêtes SQL de ce type :
SELECT priority, percent_complete FROM Task
Vous pouvez employer toutes les fonctionnalités de filtrage et de tri disponibles pour les requêtes d'entité standards, par contre veillez à tenir compte de ces limites.
L'exemple de requête SQL renvoie des résultats partiels, seules les valeurs des propriétés spécifiées (priority
et percent_complete
) étant indiquées. Toutes les autres propriétés ne sont pas renseignées. Voici comment créer une requête de projection :
C#
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage C#.
Go
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Go.
Java
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Java.
Node.js
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour en savoir plus, consultez la documentation de référence de l'API Cloud Datastore en langage Node.js.
PHP
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage PHP.
Python
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Python.
Ruby
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Ruby.
GQL
SELECT priority, percent_complete FROM Task
Et voici comment exécuter la requête de projection :
C#
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage C#.
Go
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Go.
Java
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Java.
Node.js
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour en savoir plus, consultez la documentation de référence de l'API Cloud Datastore en langage Node.js.
PHP
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage PHP.
Python
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Python.
Ruby
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Ruby.
GQL
Non applicableUne requête de projection qui n'utilise pas la clause distinct on
est une petite opération, comptabilisée comme une seule lecture d'entité pour la requête elle-même.
Regroupement
Les requêtes de projection peuvent employer la clause distinct on
pour garantir que seul le premier résultat de chaque combinaison distincte de valeurs pour les propriétés spécifiées est renvoyé. Cette clause renvoie seulement le premier résultat pour les entités dont les valeurs des propriétés en cours de projection sont identiques.
C#
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage C#.
Go
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Go.
Java
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Java.
Node.js
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour en savoir plus, consultez la documentation de référence de l'API Cloud Datastore en langage Node.js.
PHP
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage PHP.
Python
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Python.
Ruby
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Ruby.
GQL
SELECT DISTINCT ON (category) category, priority FROM Task ORDER BY category, priority
Valeurs de tableau
Le mode Datastore indexe chaque valeur unique de propriété de tableau une fois par index. Ainsi, pour vérifier si un tableau contient une valeur, utilisez un filtre d'égalité.
Lorsque la requête inclut des propriétés avec des valeurs de tableau, tenez compte des points ci-après.
Filtres d'inégalité
En raison de la manière dont elles sont indexées, les entités possédant plusieurs valeurs pour la même propriété peuvent parfois interagir avec les filtres et les ordres de tri de la requête de manière inattendue et surprenante.
Si une requête comporte plusieurs filtres d'inégalité sur une propriété donnée, une entité ne correspond à la requête que si au moins l'une de ses valeurs individuelles pour la propriété satisfait tous les filtres. Par exemple, si une entité du genre Task
comporte les valeurs fun
et programming
pour la propriété tag
, elle ne correspond pas à la requête suivante :
C#
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage C#.
Go
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Go.
Java
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Java.
Node.js
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour en savoir plus, consultez la documentation de référence de l'API Cloud Datastore en langage Node.js.
PHP
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage PHP.
Python
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Python.
Ruby
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Ruby.
GQL
SELECT * FROM Task WHERE tag > 'learn' AND tag < 'math'
Chacune des valeurs tag
de l'entité satisfait à l'un des filtres, mais aucune valeur unique ne satisfait aux deux filtres.
Filtres d'égalité multiples
Contrairement aux filtres d'inégalité, il est possible d'utiliser plusieurs filtres d'égalité pour rechercher des entités contenant un ensemble de valeurs. Ainsi, une même entité satisfera à la requête suivante :
C#
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage C#.
Go
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Go.
Java
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Java.
Node.js
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour en savoir plus, consultez la documentation de référence de l'API Cloud Datastore en langage Node.js.
PHP
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage PHP.
Python
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Python.
Ruby
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Ruby.
GQL
SELECT * FROM Task WHERE tag = 'fun' AND tag = 'programming'
Et ce, même si aucune des valeurs tag
individuelles de l'entité ne remplit les deux conditions de filtre.
Ordre de tri
De même, l'ordre de tri des propriétés à valeurs multiples est inhabituel. Étant donné que ces propriétés apparaissent une fois dans l'index pour chaque valeur unique, la première valeur affichée dans l'index détermine l'ordre de tri d'une entité.
Si une propriété à valeurs multiples n'est employée dans aucun filtre :
- et que les résultats de la requête sont triés par ordre croissant de propriété, le tri est effectué en fonction de la valeur la plus faible ;
- et que les résultats de la requête sont triés par ordre décroissant de propriété, le tri est effectué en fonction de la valeur la plus élevée ;
- l'ordre de tri n'est pas affecté par les autres valeurs, ni par leur nombre.
Cela a pour conséquence inhabituelle qu'une entité dotée des valeurs de propriété 1
et 9
précède une entité possédant les valeurs 4
, 5
, 6
et 7
dans un tri par ordre croissant et dans un tri par ordre décroissant.
Si une propriété à valeurs multiples est employée dans un filtre d'égalité, tout ordre de tri basé sur cette propriété est ignoré.
Si une propriété à valeurs multiples est employée dans un filtre d'inégalité :
- et que les résultats de la requête sont triés par ordre croissant de propriété, le tri est effectué en fonction de la plus petite valeur satisfaisant à tous les filtres d'inégalité de la requête ;
- et que les résultats de la requête sont triés par ordre décroissant de propriété, le tri est effectué en fonction de la valeur la plus élevée satisfaisant à tous les filtres d'inégalité de la requête.
Sachez que si un ensemble de filtres d'inégalité d'une propriété se traduit par un filtre d'égalité, tel que :
WHERE tags >= 'math' AND tags <= 'math'
tout ordre de tri basé sur cette propriété est ignoré, car les filtres renvoient le même résultat que le filtre d'égalité suivant :
WHERE tags = 'math'
Projections et propriétés dotées de valeurs de tableau
La projection d'une propriété dotée de valeurs de tableau ne remplira pas toutes les valeurs de cette propriété. À la place, une entité distincte sera renvoyée pour chaque combinaison unique de valeurs projetées correspondant à la requête. Par exemple, supposons que vous ayez une entité de genre Task
dotée de deux propriétés ayant plusieurs valeurs, tags
et collaborators
:
C#
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage C#.
Go
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Go.
Java
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Java.
Node.js
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour en savoir plus, consultez la documentation de référence de l'API Cloud Datastore en langage Node.js.
PHP
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage PHP.
Python
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Python.
Ruby
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Ruby.
GQL
Non applicableLa requête de projection suivante :
SELECT tags, collaborators FROM Task WHERE collaborators < 'charlie'
renvoie quatre entités avec les combinaisons de valeurs suivantes :
tags
= 'fun'
, collaborators
= 'alice'
tags
= 'fun'
, collaborators
= 'bob'
tags
= 'programming'
, collaborators
= 'alice'
tags
= 'programming'
, collaborators
= 'bob'
Curseurs, limites et décalages
Vous pouvez spécifier une limite pour la requête afin de contrôler le nombre maximal de résultats renvoyés dans un lot. L'exemple suivant extrait au maximum cinq entités "Task" :
C#
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage C#.
Go
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Go.
Java
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Java.
Node.js
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour en savoir plus, consultez la documentation de référence de l'API Cloud Datastore en langage Node.js.
PHP
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage PHP.
Python
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Python.
Ruby
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Ruby.
GQL
SELECT * FROM Task LIMIT 5
Les curseurs de requêtes permettent à une application de récupérer les résultats d'une requête sous forme de lots pratiques, sans entraîner la surcharge d'un décalage de requête. Après avoir effectué une opération de récupération, l'application peut obtenir un curseur, qui est une chaîne d'octets opaque marquant la position d'index du dernier résultat récupéré. L'application peut enregistrer cette chaîne (par exemple dans la base de données en mode Datastore, dans un cache, ou en l'intégrant dans une page Web en tant que paramètre HTTP GET
ou POST
encodé en base64). Elle peut ensuite utiliser le curseur comme point de départ pour une opération de récupération ultérieure, afin d'obtenir le prochain lot de résultats à partir du point où l'extraction précédente s'est terminée. Une récupération peut également spécifier un curseur de fin, afin de limiter l'étendue de l'ensemble de résultats renvoyé.
L'exemple qui suit illustre l'utilisation de curseurs pour la pagination.
C#
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage C#.
Go
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Go.
Java
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Java.
Node.js
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour en savoir plus, consultez la documentation de référence de l'API Cloud Datastore en langage Node.js.
PHP
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage PHP.
Python
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Python.
Ruby
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Ruby.
GQL
Non applicableBien que les bases de données en mode Datastore acceptent les décalages d'entiers, évitez de les utiliser. Employez plutôt des curseurs. Un décalage permet seulement d'éviter de renvoyer les entités ignorées à l'application, mais ces dernières sont tout de même récupérées en interne. Les entités ignorées n'ont pas d'incidence sur la latence de la requête, et l'application est facturée pour les opérations de lecture nécessaires à leur récupération. En faisant appel à des curseurs plutôt qu'à des décalages, vous évitez tous ces coûts.
Limites relatives aux curseurs
Les curseurs sont soumis aux limites suivantes :
- Un curseur ne peut être employé que par le projet qui a exécuté la requête d'origine, et seulement pour poursuivre la même requête. Il n'est pas possible de récupérer des résultats à l'aide d'un curseur sans configurer la requête à partir de laquelle il a été généré au départ.
- Si l'un des éléments suivants est modifié, vous pouvez toujours employer un curseur pour les récupérations ultérieures :
- Curseur de début
- Curseur de fin
- Décalage
- Limite
Le fait que l'ordre de tri final de la requête d'origine soit défini sur __key__
représente une exception à cette règle. Dans ce cas, vous pouvez employer le curseur dans une requête inverse, à savoir la requête d'origine avec chaque ordre de tri inversé. La requête inverse peut modifier le curseur de début, le curseur de fin, le décalage et la limite.
Mises à jour des curseurs et des données
Le curseur représente l'emplacement dans la liste des résultats après le dernier résultat renvoyé. Un curseur n'est pas une position relative dans la liste (ce n'est pas un décalage). Il s'agit d'un marqueur auquel une base de données en mode Datastore peut accéder lors du lancement d'une analyse des résultats dans un index. Si les résultats d'une requête changent entre les différentes utilisations d'un curseur, la requête remarque uniquement les modifications apportées aux résultats situés après le curseur. Si un nouveau résultat apparaît avant la position du curseur pour cette requête, il n'est pas renvoyé lors de la récupération des résultats situés après le curseur. De la même façon, si une entité ne constitue plus un résultat pour une requête alors qu'elle apparaissait avant le curseur, les résultats situés après le curseur ne changent pas. Si le dernier résultat renvoyé est supprimé de l'ensemble de résultats, le curseur est toujours capable de localiser le résultat suivant.
Lors de la récupération des résultats de la requête, vous pouvez utiliser un curseur de début et un curseur de fin pour renvoyer un groupe continu de résultats. Lorsque vous utilisez un curseur de début et de fin pour récupérer les résultats, vous n'êtes pas sûr d'obtenir la même taille de résultats que lorsque vous avez généré les curseurs. Des entités peuvent être ajoutées ou supprimées de la base de données entre le moment où les curseurs sont générés et celui où ils sont employés dans une requête.
Restrictions au niveau des requêtes
La nature du mécanisme de requête d'index impose certaines restrictions concernant ce qu'une requête est capable de faire. Les requêtes en mode Datastore n'acceptent pas les correspondances de sous-chaînes, les correspondances non sensibles à la casse ou la recherche dite en texte intégral. Les opérateurs NOT
, OR
et !=
ne sont pas acceptés en mode natif, mais certaines bibliothèques clientes peuvent ajouter cette compatibilité au mode Datastore. De plus :
Les entités sans propriété nommée dans la requête sont ignorées
Les entités du même genre ne doivent pas nécessairement avoir les mêmes propriétés. Pour être éligible en tant que résultat de requête, une entité doit posséder une valeur (éventuellement nulle) pour chaque propriété nommée dans les filtres et les ordres de tri de la requête. Sinon, l'entité est omise des index servant à exécuter la requête et, par conséquent, elle n'est pas incluse dans les résultats de la requête.
Le filtrage sur des propriétés non indexées ne renvoie aucun résultat
Une requête ne peut pas trouver les valeurs de propriétés qui ne sont pas indexées, ni effectuer de tri en fonction de ce type de propriétés. Pour plus d'informations sur les propriétés non indexées, consultez la section relative aux propriétés non indexées.
Les filtres d'inégalité sont limités à une propriété au maximum
Pour éviter d'avoir à analyser l'intégralité de l'index, le mécanisme de requête repose sur le fait que tous les résultats potentiels d'une requête sont adjacents les uns aux autres dans l'index. Pour satisfaire à cette contrainte, une seule requête ne peut pas utiliser des comparaisons d'inégalité (LESS_THAN
, LESS_THAN_OR_EQUAL
, GREATER_THAN
, GREATER_THAN_OR_EQUAL
) sur plus d'une propriété dans l'ensemble de ses filtres. Par exemple, la requête suivante est valide, car les deux filtres d'inégalité s'appliquent à la même propriété :
C#
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage C#.
Go
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Go.
Java
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Java.
Node.js
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour en savoir plus, consultez la documentation de référence de l'API Cloud Datastore en langage Node.js.
PHP
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage PHP.
Python
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Python.
Ruby
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Ruby.
GQL
SELECT * FROM Task WHERE created > DATETIME('1990-01-01T00:00:00z') AND created < DATETIME('2000-12-31T23:59:59z')
Au contraire, la requête suivante n'est pas valide, car elle emploie des filtres d'inégalité sur deux propriétés différentes :
C#
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage C#.
Go
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Go.
Java
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Java.
Node.js
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour en savoir plus, consultez la documentation de référence de l'API Cloud Datastore en langage Node.js.
PHP
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage PHP.
Python
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Python.
Ruby
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Ruby.
GQL
# Invalid query! SELECT * FROM Task WHERE created > DATETIME('1990-01-01T00:00:00z') AND priority > 3
Sachez qu'une requête peut combiner des filtres d'égalité (EQUAL
) pour différentes propriétés, ainsi qu'un ou plusieurs filtres d'inégalité sur une seule propriété. Par conséquent, l'exemple suivant est une requête valide :
C#
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage C#.
Go
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Go.
Java
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Java.
Node.js
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour en savoir plus, consultez la documentation de référence de l'API Cloud Datastore en langage Node.js.
PHP
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage PHP.
Python
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Datastore, consultez la page Bibliothèques clientes Cloud Datastore. Pour plus d'informations, consultez la documentation de référence de l'API Cloud Datastore en langage Python.