Maison >développement back-end >Golang >Comment effectuer des requêtes \'IN\' avec des tranches entières dans la banque de données Google App Engine avec Go ?

Comment effectuer des requêtes \'IN\' avec des tranches entières dans la banque de données Google App Engine avec Go ?

DDD
DDDoriginal
2024-10-28 04:49:30599parcourir

How to Perform

Requête de tableau IN dans la banque de données Google App Engine avec Go

Dans la banque de données App Engine, l'exécution d'une requête "IN" avec une tranche d'entiers n'est pas directement prise en charge à l'aide de l'outil Fonction de filtre. Cependant, plusieurs approches peuvent être utilisées pour obtenir des fonctionnalités similaires.

Approche 1 : Requête multi-conditions

Une option consiste à créer une requête distincte pour chaque élément de la tranche entière. Cette approche convient si le nombre d'éléments est relativement petit.

<code class="go">ids := []int64{1, 2, 3, 4}
var q datastore.Query
for _, id := range ids {
    q = q.Filter("Id =", id)
}</code>

Approche 2 : Requête de plage pour une plage continue

Si les éléments de la tranche entière représentent une plage continue, vous pouvez utilisez les opérateurs de plage (>= et <=) pour remplacer le filtre IN.

<code class="go">ids := []int64{1, 2, 3, 4}
q := datastore.NewQuery("Category").
    Filter("Id >=", 1).
    Filter("Id <=", 4)</p>
<h3>Approche 3 : GetMulti pour la requête Key IN</h3>
<p>Si la propriété filtrée est la clé d'entité , vous pouvez utiliser la fonction datastore.GetMulti() pour récupérer plusieurs entités en fonction d'un tableau de clés.</p>
<pre class="brush:php;toolbar:false"><code class="go">var keys []*datastore.Key
for _, id := range ids {
    keys = append(keys, datastore.NewKey(c, "Category", "", id, nil))
}
categories := make([]Category, len(keys))
err := datastore.GetMulti(c, keys, categories)</code>

Remarque :

La deuxième approche utilisant plusieurs Le filtre des appels ne fonctionne pas correctement. L'application de plusieurs filtres de cette manière entraîne une connexion ET logique, et aucune entité ne satisfera probablement toutes les conditions simultanément.

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!

Déclaration:
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