ホームページ >バックエンド開発 >Golang >Go を使用して Google App Engine データストアで整数スライスを使用して「IN」クエリを実行する方法

Go を使用して Google App Engine データストアで整数スライスを使用して「IN」クエリを実行する方法

DDD
DDDオリジナル
2024-10-28 04:49:30598ブラウズ

How to Perform

Go を使用した Google App Engine データストアでの IN 配列クエリ

App Engine データストアでは、整数のスライスを使用した "IN" クエリの実行は、フィルター機能。ただし、同様の機能を実現するために、いくつかのアプローチを使用できます。

アプローチ 1: 複数条件クエリ

1 つのオプションは、整数スライス内の要素ごとに個別のクエリを作成することです。このアプローチは、要素の数が比較的少ない場合に適しています。

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

アプローチ 2: 連続範囲の範囲クエリ

整数スライス内の要素が連続範囲を表す場合、次のことができます。範囲演算子 (>= および <=) を使用して IN フィルターを置き換えます。

<code class="go">ids := []int64{1, 2, 3, 4}
q := datastore.NewQuery("Category").
    Filter("Id >=", 1).
    Filter("Id <=", 4)</p>
<h3>アプローチ 3: キー IN クエリの 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)</code>

注:

複数のエンティティを使用する 2 番目のアプローチフィルター呼び出しが正しく機能しません。この方法で複数のフィルターを適用すると、論理 AND 接続が作成され、すべての条件を同時に満たすエンティティは存在しない可能性があります。

以上がGo を使用して Google App Engine データストアで整数スライスを使用して「IN」クエリを実行する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。