データストアの特定のプロパティに対して複数の値がチェックされる「IN 配列」クエリの実行、このタイプのクエリに対するネイティブ サポートがないため、Go では別のアプローチが必要です。
1 つのオプションは、フィルタリングする配列内の要素ごとに個別のクエリを実行することです。例:
<code class="go">ids := []int64{1, 2, 3, 4} for _, id := range ids { q := datastore.NewQuery("Category").Filter("Id =", id) // Execute the query and process the results for each element }</code>
配列内の要素が連続範囲を形成する場合、>= および <= 演算子を使用して「IN」フィルターを置き換えることができます。例:
<code class="go">ids := []int64{1, 2, 3, 4} q := datastore.NewQuery("Category").Filter("Id >=", 1).Filter("Id <=", 4)</p> <h3>3. datastore.GetMulti()</h3> <p>フィルタリングされるプロパティがエンティティ キー自体である場合は、datastore.GetMulti() 関数を使用して、キーの配列に基づいてエンティティのリストを取得できます。</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) if err != nil { return nil, err }</code>
注: 複数のフィルターが論理的に適用されるため、AND を使用した複合フィルターは予期しない結果を返す可能性があることに注意してください。
以上がGo を使用して Google App Engine データストアで「IN 配列」クエリを実行する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。