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

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

Barbara Streisand
發布: 2024-10-25 17:32:44
原創
580 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板