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
Mary-Kate OlsenOriginal
2024-10-26 12:50:02442Durchsuche

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>

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>

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>

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!

Stellungnahme:
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