Heim > Backend-Entwicklung > Golang > Wie rufe ich mit Go Entitäten nach IDs im Google App Engine-Datenspeicher ab: Alternativen zu „IN Array'-Abfragen?

Wie rufe ich mit Go Entitäten nach IDs im Google App Engine-Datenspeicher ab: Alternativen zu „IN Array'-Abfragen?

Mary-Kate Olsen
Freigeben: 2024-10-26 12:50:02
Original
471 Leute haben es durchsucht

How to Retrieve Entities by IDs in Google App Engine Datastore with Go: Alternatives to

Entitäten nach IDs im Google App Engine Datastore mit Go abrufen

Bei der Arbeit mit dem Google App Engine Datastore ist es wichtig, effiziente Abfragen durchzuführen um bestimmte Entitäten abzurufen. Eine solche Abfrage ist die „IN Array“-Abfrage, bei der Sie Entitäten basierend auf einem Array von IDs filtern können.

Herausforderung bei der Durchführung von „IN Array“-Abfragen

In Go, die Datenspeicher-API unterstützt nicht direkt „IN“-Array-Filter. Versuche, datastore.NewQuery("Category").Filter("Id IN", ids) zu verwenden, führen zu einem Fehler.

Alternative Ansätze

Während "IN "Filter sind nicht direkt verfügbar, es gibt alternative Ansätze, um das gleiche Ergebnis zu erzielen:

1. Iterierte Abfragen

Sie können für jede ID im Array eine separate Abfrage ausführen. Zum Beispiel:

<code class="go">ids := []int64{1,2,3,4}
for _, id := range ids {
    q := datastore.NewQuery("Category").Filter("Id =", id)
}</code>
Nach dem Login kopieren

2. Bereichsabfragen

Wenn sich die IDs in einem kontinuierlichen Bereich befinden, können Sie Bereichsabfragen anstelle von „IN“-Filtern verwenden. Zum Beispiel:

<code class="go">ids := []int64{1,2,3,4}
q := datastore.NewQuery("Category").Filter("Id>=", 1).Filter("Id<=", 4)</code>
Nach dem Login kopieren

3. GetMulti-Funktion

Wenn die Eigenschaft, nach der Sie filtern, der Entitätsschlüssel selbst ist, können Sie die Funktion datastore.GetMulti() verwenden, um eine Liste von Entitäten abzurufen, die durch ein Array ihrer Schlüssel angegeben werden. Zum Beispiel:

<code class="go">keys := make([]*datastore.Key, len(ids))
for i, id := range ids {
    keys[i] = datastore.NewKey(c, "Category", "", id, nil)
}

categories := make([]Category, len(keys))
err := datastore.GetMulti(c, keys, categories)</code>
Nach dem Login kopieren

Hinweis:

Iterierte Abfragen sind bei großen Arrays möglicherweise weniger effizient. Bereichsabfragen eignen sich für kontinuierliche Bereiche, unterstützen jedoch keine Lücken. GetMulti ist für das Abrufen von Entitäten anhand ihrer Schlüssel optimiert.

Das obige ist der detaillierte Inhalt vonWie rufe ich mit Go Entitäten nach IDs im Google App Engine-Datenspeicher ab: Alternativen zu „IN Array'-Abfragen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage