2017-12-27 4 views
0

私は@awspilot/dynamodbを使用して、customer_idが主キーである顧客テーブルからデータを取得しています。テーブルから複数の電子メールIDを検索する - DynamoDB

customer_emailに基づいて得意先IDを取得する必要があります。

上記のコードは、1つのメールIDを渡すことができますが、複数のメールIDで検索する方法はありますか?

答えて

0

DynamoDBは、1つのパーティション(つまり1つのパーティションキー)からデータを取得できるqueryをサポートしています。つまり、テーブル内のすべての項目(つまりフルテーブルスキャン)を返すscanです。

クエリするパーティションキーが分かっている場合は、複数のクエリを実行して結果セットを結合する方が速くなります。あなたがパフォーマンスを気にしない、またはあなたがスピードに満足しているなら(あなたのテーブルが成長するにつれてスキャンのスケールが悪くなることに気をつけてください)、あなたはスキャンを使うことができます。

実際にスキャンを実行しているため、パーティションキーをインデックスとして使用していないことに注意してください。

クエリは次のようになります:

DynamoDB 
    .table('bc_customer') 
    .where('email').eq('[email protected]') 
    .query(function(err, data) { 
     console.log(err,data) 
    }) 

、スキャン(私は思う - awspilot documentsがあまりにも明確ではない)のようなものでなければなりません:

DynamoDB 
    .table('bc_customer') 
    .having('email').eq('[email protected]') 
    .having('someattribute').eq('something') 
    .scan(function(err, data) { 
     console.log(err, data) 
    }) 
関連する問題