2017-12-04 2 views
0

nodejs를 사용하여 무언가를 개발 중이고 DynamoDB에 테이블이 있습니다. 따라서, 나는이 두 가지를 사용하기 위해 nodejs에 aws-sdk를 사용하고있다.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

를 사용하여 야이 [체크 아웃 @ykn https://stackoverflow.com/questions/29992227/retrieve-distinct - 값 - 해시 키 - dynamodb]. –

+0

그래서, 이것을 달성 할 수있는 API 호출이 없습니까? – ykn121

+0

적절한'''ScanFilter'''로 스캔을 수행해야한다고 생각합니다. 여기를 확인하십시오. http : // docs.aws.amazon.com/kinesisanalytics/korean/dev/ count-distinct-items-example.html' –

답변

1

1) 모든 (고유하지 않은) ID 값을 얻으려면 DynamoDB 검사를 수행하십시오. ProjectionExpression은 반환 된 결과 속성을이 경우 ID로만 제한합니다. 이것은 스캔 속도가 더 빠르지는 않습니다. 스캔을 실행하면 결과가 포함 된 JSON 객체가 반환됩니다. JMES를 사용하여 ID 배열 (data.Items.ID)을 가져올 수 있습니다.

2) nodejs 코드의 독특한 배열을 확인합니다 (예를 들어, 아래의 ArrNoDupe 코드 기능)

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