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!