Maison  >  Article  >  développement back-end  >  Comment récupérer des entités à l'aide d'un tableau d'identifiants dans la banque de données Google App Engine à l'aide de Golang ?

Comment récupérer des entités à l'aide d'un tableau d'identifiants dans la banque de données Google App Engine à l'aide de Golang ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-25 17:32:44470parcourir

How to Retrieve Entities by an Array of IDs in Google App Engine Datastore using Golang?

Interrogation de la banque de données pour les entités avec un tableau d'identifiants à l'aide de Golang

Dans la banque de données Google App Engine, il n'existe pas de prise en charge directe pour effectuer une " IN" requête pour récupérer des entités basées sur un tableau d'ID. Cependant, il existe des approches alternatives pour obtenir cette fonctionnalité.

Requête avec plage (si les ID sont consécutifs)

Si les ID forment une plage continue, vous pouvez utiliser le ">" (supérieur à) et "<=" (inférieur ou égal à) pour spécifier la plage d'ID à interroger. Par exemple :

<code class="go">ids := []int64{1, 2, 3, 4}
q := datastore.NewQuery("Category").Filter("Id>=", 1).Filter("Id<=", 4)</p>
<p><strong>Exécuter plusieurs requêtes</strong></p>
<p>Pour les ID qui ne se trouvent pas dans une plage continue, vous pouvez exécuter une requête distincte pour chaque ID du tableau. Cela implique de créer un nouvel objet Query pour chaque ID et de filtrer par cet ID.</p>
<pre class="brush:php;toolbar:false"><code class="go">for _, id := range ids {
    q := datastore.NewQuery("Category").Filter("Id =", id)
    // ... perform query and retrieve entities
}</code>

GetMulti Function

Si la propriété sur laquelle vous filtrez est la clé d'entité lui-même, vous pouvez utiliser la fonction datastore.GetMulti() pour récupérer une liste d'entités en fonction d'un tableau de leurs clés.

<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)
if err != nil {
    // Handle error
}</code>

Remarque :

Quand en utilisant la méthode Filter() pour spécifier plusieurs filtres, ils seront joints par une opération AND. Par conséquent, votre tentative de filtrer par plusieurs identifiants à l'aide de q.Filter("Id =", id) n'aboutira probablement à aucune entité correspondante à moins que tous les identifiants n'existent dans la même entité.

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