Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Melaksanakan Pertanyaan \'IN\' dengan Integer Slices dalam Google App Engine Datastore dengan Go?
Dalam App Engine datastore, melakukan pertanyaan "IN" dengan sepotong integer tidak disokong secara langsung menggunakan Fungsi penapis. Walau bagaimanapun, beberapa pendekatan boleh digunakan untuk mencapai kefungsian yang serupa.
Satu pilihan ialah mencipta pertanyaan berasingan untuk setiap elemen dalam kepingan integer. Pendekatan ini sesuai jika bilangan elemen agak kecil.
<code class="go">ids := []int64{1, 2, 3, 4} var q datastore.Query for _, id := range ids { q = q.Filter("Id =", id) }</code>
Jika unsur dalam kepingan integer mewakili julat berterusan, anda boleh gunakan operator julat (>= dan <=) untuk menggantikan penapis IN.
<code class="go">ids := []int64{1, 2, 3, 4} q := datastore.NewQuery("Category"). Filter("Id >=", 1). Filter("Id <=", 4)</p> <h3>Pendekatan 3: GetMulti for Key IN Query</h3> <p>Jika sifat yang ditapis ialah kunci entiti , anda boleh menggunakan fungsi datastore.GetMulti() untuk mendapatkan semula berbilang entiti berdasarkan tatasusunan kunci.</p> <pre class="brush:php;toolbar:false"><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)</code>
Nota:
Pendekatan kedua menggunakan berbilang Panggilan penapis tidak berfungsi dengan betul. Menggunakan berbilang penapis dengan cara ini menghasilkan sambungan DAN logik, dan tiada entiti mungkin akan memenuhi semua syarat secara serentak.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Pertanyaan \'IN\' dengan Integer Slices dalam Google App Engine Datastore dengan Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!