Utilisation des requêtes "IN Array" dans la banque de données Google App Engine avec Go
Requête par tableau d'ID
Q : Comment puis-je effectuer une requête sur la banque de données qui inclut un tableau d'ID ?
R : La banque de données ne prend pas en charge de manière native les requêtes "IN".
Plusieurs Requêtes
Une solution de contournement consiste à exécuter des requêtes distinctes pour chaque élément du tableau ID. Alternativement, si les identifiants sont dans une plage continue, vous pouvez utiliser les opérateurs ">=" et "<=" :
<code class="go">ids := []int64{1, 2, 3, 4} q := datastore.NewQuery("Category").Filter("Id>=", 1).Filter("Id<=", 4)</p> <p><strong>GetMulti</strong></p> <p> Pour les requêtes sur la propriété de clé d'entité, vous pouvez utiliser la fonction datastore.GetMulti() :</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>
Comportement du filtre
Notez que plusieurs Query.Filter() les appels entraîneront une connexion ET entre les filtres. Cela peut produire des résultats inattendus si vous attendez une connexion OU. Assurez-vous de stocker la requête renvoyée et de l'utiliser comme base pour les filtres suivants :
<code class="go">q := q.Filter("Id=", id)</code>
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!