首頁  >  文章  >  後端開發  >  如何使用 Golang 透過 Google App Engine 資料儲存中的 ID 陣列檢索實體?

如何使用 Golang 透過 Google App Engine 資料儲存中的 ID 陣列檢索實體?

Barbara Streisand
Barbara Streisand原創
2024-10-25 17:32:44470瀏覽

How to Retrieve Entities by an Array of IDs in Google App Engine Datastore using Golang?

使用Golang 查詢資料儲存中具有ID 陣列的實體

在Google App Engine 資料儲存中,不直接支援執行“ IN”查詢根據ID 陣列檢索實體。但是,還有其他方法可以實現此功能。

範圍查詢(如果ID 連續)

如果ID 形成連續範圍,您可以使用「>」 (大於)和「

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

執行多個查詢

對於不在連續範圍內的ID,可以對數組中的每個ID執行單獨的查詢。這涉及為每個 ID 建立一個新的 Query 物件並按該 ID 進行篩選。

<code class="go">for _, id := range ids {
    q := datastore.NewQuery("Category").Filter("Id =", id)
    // ... perform query and retrieve entities
}</code>

GetMulti Function

如果您要篩選的屬性是實體鍵本身,您可以使用datastore.GetMulti() 函數根據實體的鍵數組擷取實體列表。

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

注意:

當使用 Filter() 方法指定多個過濾器,它們將透過 AND 運算連接起來。因此,您嘗試使用 q.Filter("Id =", id) 按多個 ID 進行過濾可能會導致沒有匹配的實體,除非所有 ID 都存在於同一實體中。

以上是如何使用 Golang 透過 Google App Engine 資料儲存中的 ID 陣列檢索實體?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn