Golang を使用した ID の配列を持つエンティティのデータストアのクエリ
Google App Engine データストアでは、「 IN" クエリを使用して、ID の配列に基づいてエンティティを取得します。ただし、この機能を実現する別のアプローチもあります。
範囲を指定したクエリ (ID が連続している場合)
ID が連続範囲を形成している場合は、 「>」 (より大きい) および "<=" (以下) 演算子を使用して、クエリする ID の範囲を指定します。例:
<code class="go">ids := []int64{1, 2, 3, 4} q := datastore.NewQuery("Category").Filter("Id>=", 1).Filter("Id<=", 4)</p> <p><strong>複数のクエリを実行</strong></p> <p>連続範囲にない ID の場合、配列内の ID ごとに個別のクエリを実行できます。これには、ID ごとに新しい Query オブジェクトを作成し、その ID でフィルタリングすることが含まれます。</p> <pre class="brush:php;toolbar:false"><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 中国語 Web サイトの他の関連記事を参照してください。