GoogleCloudデータストア内の複数のエンティティ間でクエリを実行する

ElFitz

現在、3つのインデックスがあります。ユーザー、投票、機能。

機能には「アクティブな」ブールプロパティがあります。投票には2つのプロパティがあり、どちらもインデックスが付けられています。ユーザーのキーと機能のキー。

私がやろうとしているのは、現在アクティブな機能に対してユーザーが行ったすべての投票を取得することです。現在、すべてのアクティブな機能を取得しています。次に、結果の機能ごとに、現在のユーザーのIDと機能のIDに基づいて投票をフィルタリングします。

それはたくさんの質問です。

OR、JOIN、またはINを使用して単一のクエリを作成することを提案する人もいますが、GQLにはORまたはJOINがなく、INは配列では機能しないようです。

私が現在行っていることよりもうまく処理することは可能ですか?どうやって?

nshmura

を使用できますBatch operations

以下は、特定のユーザーに関連するすべてのアクティブな機能を取得するための私の提案です。

注意

  • クエリコストを最小化するために、以下のコードはを使用しKeys-only queriesます。そして、Votesキーは次のようになっていると想定されています{user_id}_{feature_id}
  • 以下のコードはGolangのダミーコードです。

1)特定のユーザーに関連する投票を取得するKeys-only query(コストの制限を追加することをお勧めします):

    query := datastore.NewQuery("Votes").Filter("UserID =", 123).KeysOnly().Limit(100)

    keys, err := client.GetAll(ctx, query, nil)

2)投票のキーを分割してFeatureIDを取得します。

   featureIDs := make([]*datastore.Key, len(keys))

   for i, key := range keys {
       s := strings.Split(key, "_")
       userID, featureID := s[0], s[1]
       featureIDs[i] = &datastore.Key{ Name:featureID }
   }

3)次の方法で機能を取得しますBatch operation

   var features []*Features
   client.GetMulti(ctx, featureIDs, features)

4)アクティブフラグで機能をフィルタリングします。

    for _, f := range features {
        if f.active {
           // this is active feature.
        }
    }

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

GoogleCloudデータストアでget-update-set操作を実行するためのエンティティのロック

分類Dev

単一のエンティティを取得するためのデータストアクエリを実行しますか?

分類Dev

Golangの名前空間でデータストアからエンティティをクエリする方法は?

分類Dev

c# プリペアド ステートメントで複数の SQL クエリを実行する

分類Dev

データベース内の複数のエンティティへのデータのリンク

分類Dev

EFコア:関連する1対多のエンティティの複数のレベルでデータをクエリする正しい方法

分類Dev

複数のデータベースでエンティティフレームワークを使用する

分類Dev

Jhipster:エンティティ/複数エンティティのリストのコードを生成する方法

分類Dev

1つのDBContextを使用してEntityFrameworkで複数のLinqToエンティティクエリを実行するデータベースに1回だけ接続する

分類Dev

すべてのエンティティについてGoogleAppEngineデータストアにクエリを実行します

分類Dev

スタンドアロンアプリのエキスポでテストした後、ディスパッチ機能が複数回実行されているようです-ディープリンク

分類Dev

SQLクエリ:1つのテーブル内で複数のカウントの比較を実行する方法

分類Dev

使用するデータ構造の複数のクエリ条件で複数のエンティティを保存するとき?

分類Dev

エンティティのエンティティキーをデータストア(ノードJS)内の別のエンティティのプロパティとして割り当てるにはどうすればよいですか?

分類Dev

GCPでデータストアエンティティのコンテンツをフェッチするPythonスクリプトを作成する

分類Dev

複数のテストディレクトリでジャスミン仕様を実行する方法

分類Dev

JPA基準:ルートを複数のエンティティサブクラスにダウンキャストし、同じリンクエンティティのナチュラルIDでフィルタリングする

分類Dev

Laravelで複数のステートメントを使用して生のSQLクエリを実行する方法

分類Dev

Dynamics CRM WebAPIキャンペーンへのマーケティングリストの追加「キャンペーンタイプのエンティティとリストタイプのエンティティの間で関連付けを実行することはできません。」

分類Dev

1つのクエリで複数のInsertステートメントを実行する方法は?

分類Dev

1つのmysqlクエリで複数のステートメントを実行する

分類Dev

スクリプトの一部をエディターで実行する

分類Dev

SwiftクラスでXcodeのテストクラスアシスタントエディターを使用する

分類Dev

エンティティフレームワーク:1回のラウンドトリップで複数のコマンドを実行します

分類Dev

特定のプロパティを持つすべてのエンティティに対するAppEngineデータストアクエリ(Java)

分類Dev

(psqlインタラクティブターミナルから)複数のSQLクエリを実行するにはどうすればよいですか?

分類Dev

「スタートアップディスククリエーター」で複数のUSBパーティションを表示するにはどうすればよいですか?

分類Dev

データストアのエンティティからIDを取得する

分類Dev

SQL:1つのクエリで複数のインタラクティブスクリプトを作成する方法(行を挿入)

Related 関連記事

  1. 1

    GoogleCloudデータストアでget-update-set操作を実行するためのエンティティのロック

  2. 2

    単一のエンティティを取得するためのデータストアクエリを実行しますか?

  3. 3

    Golangの名前空間でデータストアからエンティティをクエリする方法は?

  4. 4

    c# プリペアド ステートメントで複数の SQL クエリを実行する

  5. 5

    データベース内の複数のエンティティへのデータのリンク

  6. 6

    EFコア:関連する1対多のエンティティの複数のレベルでデータをクエリする正しい方法

  7. 7

    複数のデータベースでエンティティフレームワークを使用する

  8. 8

    Jhipster:エンティティ/複数エンティティのリストのコードを生成する方法

  9. 9

    1つのDBContextを使用してEntityFrameworkで複数のLinqToエンティティクエリを実行するデータベースに1回だけ接続する

  10. 10

    すべてのエンティティについてGoogleAppEngineデータストアにクエリを実行します

  11. 11

    スタンドアロンアプリのエキスポでテストした後、ディスパッチ機能が複数回実行されているようです-ディープリンク

  12. 12

    SQLクエリ:1つのテーブル内で複数のカウントの比較を実行する方法

  13. 13

    使用するデータ構造の複数のクエリ条件で複数のエンティティを保存するとき?

  14. 14

    エンティティのエンティティキーをデータストア(ノードJS)内の別のエンティティのプロパティとして割り当てるにはどうすればよいですか?

  15. 15

    GCPでデータストアエンティティのコンテンツをフェッチするPythonスクリプトを作成する

  16. 16

    複数のテストディレクトリでジャスミン仕様を実行する方法

  17. 17

    JPA基準:ルートを複数のエンティティサブクラスにダウンキャストし、同じリンクエンティティのナチュラルIDでフィルタリングする

  18. 18

    Laravelで複数のステートメントを使用して生のSQLクエリを実行する方法

  19. 19

    Dynamics CRM WebAPIキャンペーンへのマーケティングリストの追加「キャンペーンタイプのエンティティとリストタイプのエンティティの間で関連付けを実行することはできません。」

  20. 20

    1つのクエリで複数のInsertステートメントを実行する方法は?

  21. 21

    1つのmysqlクエリで複数のステートメントを実行する

  22. 22

    スクリプトの一部をエディターで実行する

  23. 23

    SwiftクラスでXcodeのテストクラスアシスタントエディターを使用する

  24. 24

    エンティティフレームワーク:1回のラウンドトリップで複数のコマンドを実行します

  25. 25

    特定のプロパティを持つすべてのエンティティに対するAppEngineデータストアクエリ(Java)

  26. 26

    (psqlインタラクティブターミナルから)複数のSQLクエリを実行するにはどうすればよいですか?

  27. 27

    「スタートアップディスククリエーター」で複数のUSBパーティションを表示するにはどうすればよいですか?

  28. 28

    データストアのエンティティからIDを取得する

  29. 29

    SQL:1つのクエリで複数のインタラクティブスクリプトを作成する方法(行を挿入)

ホットタグ

アーカイブ