Datenspeicher nach Entitäten mit einem Array von IDs mithilfe von Golang abfragen
In Google App Engine Datastore gibt es keine direkte Unterstützung für die Durchführung eines „ IN“-Abfrage zum Abrufen von Entitäten basierend auf einem Array von IDs. Es gibt jedoch alternative Ansätze, um diese Funktionalität zu erreichen.
Abfrage mit Bereich (wenn IDs aufeinanderfolgend sind)
Wenn die IDs einen kontinuierlichen Bereich bilden, können Sie die verwenden ">" (größer als) und „<=" (kleiner oder gleich) Operatoren, um den Bereich der abzufragenden IDs anzugeben. Zum Beispiel:
<code class="go">ids := []int64{1, 2, 3, 4} q := datastore.NewQuery("Category").Filter("Id>=", 1).Filter("Id<=", 4)</p> <p><strong>Mehrere Abfragen ausführen</strong></p> <p>Für IDs, die nicht in einem kontinuierlichen Bereich liegen, können Sie für jede ID im Array eine separate Abfrage ausführen. Dazu gehört das Erstellen eines neuen Abfrageobjekts für jede ID und das Filtern nach dieser 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
Wenn die Eigenschaft, nach der Sie filtern, der Entitätsschlüssel ist selbst können Sie die Funktion datastore.GetMulti() verwenden, um eine Liste von Entitäten basierend auf einem Array ihrer Schlüssel abzurufen.
<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>
Hinweis:
Wann Wenn Sie mit der Filter()-Methode mehrere Filter angeben, werden diese mit einer UND-Verknüpfung verknüpft. Daher führt Ihr Versuch, mithilfe von q.Filter("Id =", id) nach mehreren IDs zu filtern, wahrscheinlich zu keinen übereinstimmenden Entitäten, es sei denn, alle IDs sind in derselben Entität vorhanden.
Das obige ist der detaillierte Inhalt vonWie rufe ich mithilfe von Golang Entitäten anhand eines ID-Arrays im Google App Engine-Datenspeicher ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!