2017-12-19 68 views
0

私はDynamoDBでPHPを使用しています。私は 'スキャン'を使用していくつかのレコードを取得しています。私はMySQLのようにこのクエリでGroup Byを使いたかったのです。助けてください。DynamoDBでgroup byを使用するにはどうすればよいですか?

$result = $client->scan([ 
      'ExpressionAttributeValues' => [ 
       ':v1' => [ 
        'S' => '2002', 
       ] 
      ], 
      'FilterExpression' => 'userId = :v1', 
      'TableName' => $this->table, 
     ]); 
     return $result; 
+0

以下の答えに加えて、あなたが 'scan'を使ってアイテムをグループ化できると思っているのであれば、DynamoDBはあなたが探しているツールではないかもしれません。テーブルデザイン。 – JHH

+0

スキャンは、テーブルの内容全体を返すために使用され、実質的な読み取り容量単位を消費します。あなたの例では、 'userId'をフィルタリングしています。本当にやりたいことは、' userId'をハッシュキーとして、または 'userId'をキーとしてセカンダリインデックスから' query'することです。現在のコードでは、100万レコードのテーブルが返されます。これは、クライアントがフィルタ式と一致しないものをすべて破棄するためだけです。 – JHH

答えて

1

Dynamo DBにはGROUP BYはありません。これはNoSQLデータベースなので、SQLと似ていません。

しかし、HiveQLを使用すると、DynamoをSQLに似た方法でクエリできます。

+0

お返事ありがとうございます@mkobit。わかりました。 PHPでHiveQlを使用するのを手伝ってください。すべての例。 –

関連する問題