Im App Engine-Datenspeicher wird die Durchführung einer „IN“-Abfrage mit einem Teil von Ganzzahlen nicht direkt mit dem unterstützt Filterfunktion. Es können jedoch mehrere Ansätze verwendet werden, um eine ähnliche Funktionalität zu erreichen.
Eine Möglichkeit besteht darin, für jedes Element im Integer-Slice eine separate Abfrage zu erstellen. Dieser Ansatz eignet sich, wenn die Anzahl der Elemente relativ klein ist.
<code class="go">ids := []int64{1, 2, 3, 4} var q datastore.Query for _, id := range ids { q = q.Filter("Id =", id) }</code>
Wenn die Elemente im Integer-Slice einen kontinuierlichen Bereich darstellen, können Sie dies tun Verwenden Sie Bereichsoperatoren (>= und <=), um den IN-Filter zu ersetzen.
<code class="go">ids := []int64{1, 2, 3, 4} q := datastore.NewQuery("Category"). Filter("Id >=", 1). Filter("Id <=", 4)</p> <h3>Ansatz 3: GetMulti für Schlüssel-IN-Abfrage</h3> <p>Wenn die gefilterte Eigenschaft der Entitätsschlüssel ist , können Sie die Funktion datastore.GetMulti() verwenden, um mehrere Entitäten basierend auf einem Array von Schlüsseln abzurufen.</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>
Hinweis:
Der zweite Ansatz verwendet mehrere Filteraufrufe funktionieren nicht richtig. Die Anwendung mehrerer Filter auf diese Weise führt zu einer logischen UND-Verbindung, und keine Entitäten werden wahrscheinlich alle Bedingungen gleichzeitig erfüllen.
Das obige ist der detaillierte Inhalt vonWie führe ich mit Go „IN'-Abfragen mit ganzzahligen Slices im Google App Engine-Datenspeicher durch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!