2017-12-04 2 views
0

私はnodejsで何かを開発しており、DynamoDBにテーブルがあります。したがって、私はnodejsにaws-sdkを使ってこれらの2つのことを扱います。AWS DynamoDBリスト固有のID

ここは例です。 IDと名前はテーブルの結合キーです。

ID name otherData 
---------------------- 
1  Matt 123 
1  Mary 1234 
2  Mary 2312 
4  Mary 3123 
4  Pet 3123 

私が必要とするのは、別個のIDのリストを取得することです。したがって、期待される出力は

ID = [1, 2, 4] 

どのようにするのですか?

+0

)例えば、以下のArrNoDupeコード機能を使用して(あなたのnodejsコードの配列は、ユニークな作りねえ、これをチェックアウト@ykn [https://stackoverflow.com/questions/29992227/retrieve-distinctハッシュキーからの値 - dynamodb]。 –

+0

これを実現するAPIコールはありませんか? – ykn121

+0

私は適切な '' 'ScanFilter'''でスキャンを実行しなければならないと思います。 http:// docs.aws.amazon.com/kinesisanalytics/latest/dev/count-distinct-items-example.html' –

答えて

1

1)すべての(一意でない)ID値を取得するには、DynamoDBスキャンを実行します。 ProjectionExpressionは返される結果属性を制限します(この場合はIDのみ)。これでスキャンが速くなるわけではないことに注意してください。スキャンを実行すると、結果を含むJSONオブジェクトが返されます。 JMESを使用してID配列(data.Items.ID)を取得することができます。

2)

var params = { 
ProjectionExpression: "ID", 
TableName: "YOUR_TABLE" 
}; 

ddb.scan(params, function(err, data) { 
    if (err) { 
    console.log("Error", err); 
    } else { 
     console.log(ArrNoDupe(data.Items.ID)); 
    }); 
    } 
}); 

function ArrNoDupe(a) { 
    var temp = {}; 
    for (var i = 0; i < a.length; i++) 
     temp[a[i]] = true; 
    var r = []; 
    for (var k in temp) 
     r.push(k); 
    return r; 
} 
+0

私はこれを答えとして受け入れると思います。これをaws側で実行できる方法はないようです。ありがとう。 – ykn121

+0

私の知る限り、それは正しいです。 – Stu