Maison > développement back-end > Golang > le corps du texte

Comment récupérer des entités par identifiants dans la banque de données Google App Engine avec Go : alternatives aux requêtes \'IN Array\' ?

Mary-Kate Olsen
Libérer: 2024-10-26 12:50:02
original
352 Les gens l'ont consulté

How to Retrieve Entities by IDs in Google App Engine Datastore with Go: Alternatives to

Récupération d'entités par identifiant dans la banque de données Google App Engine avec Go

Lorsque vous travaillez avec la banque de données Google App Engine, il est essentiel d'effectuer des requêtes efficaces pour récupérer des entités spécifiques. L'une de ces requêtes est la requête "IN Array", dans laquelle vous pouvez filtrer les entités en fonction d'un tableau d'ID.

Défi lié à l'exécution de requêtes "IN Array"

Dans Allez, l'API de la banque de données ne prend pas directement en charge les filtres de tableau "IN". Les tentatives d'utilisation de datastore.NewQuery("Category").Filter("Id IN", ids) entraîneront une erreur.

Approches alternatives

While "IN " Les filtres ne sont pas directement disponibles, il existe des approches alternatives pour arriver au même résultat :

1. Requêtes itérées

Vous pouvez exécuter une requête distincte pour chaque ID du tableau. Par exemple :

<code class="go">ids := []int64{1,2,3,4}
for _, id := range ids {
    q := datastore.NewQuery("Category").Filter("Id =", id)
}</code>
Copier après la connexion

2. Requêtes par plage

Si les identifiants se trouvent dans une plage continue, vous pouvez utiliser des requêtes par plage au lieu des filtres « IN ». Par exemple :

<code class="go">ids := []int64{1,2,3,4}
q := datastore.NewQuery("Category").Filter("Id>=", 1).Filter("Id<=", 4)</code>
Copier après la connexion

3. Fonction GetMulti

Si la propriété par laquelle vous filtrez est la clé d'entité elle-même, vous pouvez utiliser la fonction datastore.GetMulti() pour récupérer une liste d'entités spécifiées par un tableau de leurs clés. Par exemple :

<code class="go">keys := make([]*datastore.Key, len(ids))
for i, id := range ids {
    keys[i] = datastore.NewKey(c, "Category", "", id, nil)
}

categories := make([]Category, len(keys))
err := datastore.GetMulti(c, keys, categories)</code>
Copier après la connexion

Remarque :

Les requêtes itérées peuvent être moins efficaces pour les grands tableaux. Les requêtes par plage conviennent aux plages continues, mais elles ne prennent pas en charge les espaces. GetMulti est optimisé pour récupérer des entités par leurs clés.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!