Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara Mengambil Entiti mengikut ID dalam Google App Engine Datastore dengan Go: Alternatif kepada Pertanyaan \"IN Array\"?

Cara Mengambil Entiti mengikut ID dalam Google App Engine Datastore dengan Go: Alternatif kepada Pertanyaan \"IN Array\"?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-26 12:50:02354semak imbas

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

Mendapatkan semula Entiti mengikut ID dalam Google App Engine Datastore dengan Go

Apabila bekerja dengan Google App Engine Datastore, adalah penting untuk melaksanakan pertanyaan yang cekap untuk mendapatkan semula entiti tertentu. Satu pertanyaan sedemikian ialah pertanyaan "IN Array", di mana anda boleh menapis entiti berdasarkan tatasusunan ID.

Cabaran dalam Melaksanakan Pertanyaan "IN Array"

In Pergi, API stor data tidak menyokong penapis tatasusunan "IN" secara langsung. Percubaan untuk menggunakan stor data.NewQuery("Kategori"). Penapis("Id IN", id) akan mengakibatkan ralat.

Pendekatan Alternatif

Semasa "IN " penapis tidak tersedia secara langsung, terdapat pendekatan alternatif untuk mencapai hasil yang sama:

1. Pertanyaan Berulang

Anda boleh melaksanakan pertanyaan berasingan untuk setiap ID dalam tatasusunan. Contohnya:

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

2. Pertanyaan Julat

Jika ID berada dalam julat berterusan, anda boleh menggunakan pertanyaan julat dan bukannya penapis "IN". Contohnya:

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

3. Fungsi GetMulti

Jika harta yang anda tapis ialah kunci entiti itu sendiri, anda boleh menggunakan fungsi stor data.GetMulti() untuk mendapatkan semula senarai entiti yang ditentukan oleh tatasusunan kunci mereka. Contohnya:

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

Nota:

Pertanyaan berulang mungkin kurang cekap untuk tatasusunan besar. Pertanyaan julat sesuai untuk julat berterusan, tetapi pertanyaan itu tidak menyokong jurang. GetMulti dioptimumkan untuk mendapatkan semula entiti dengan kuncinya.

Atas ialah kandungan terperinci Cara Mengambil Entiti mengikut ID dalam Google App Engine Datastore dengan Go: Alternatif kepada Pertanyaan \"IN Array\"?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn