2016-06-20 13 views
0

ラムダAWSを使用してDynamoDBから条件を満たす最初の10項目を取得しようとします。私はリミットパラメータを使用しようとしていたが、それは(そのウェブサイト上の根拠)AWS DynamoDB Node.jsスキャン - 一定数の結果

https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB.html#scan-property

「最大項目数を評価する(必ずしも一致するアイテムの数)」です。

私の状態を満たす最初の10項目を取得するには? DynamoDBのはScannedCountCountの間になり区別:

var AWS = require('aws-sdk'); 
var db = new AWS.DynamoDB(); 

exports.handler = function(event, context) { 

    var params = { 
    TableName: "Events", //"StreamsLambdaTable", 
    ProjectionExpression: "ID, description, endDate, imagePath, locationLat, locationLon, #nm, startDate, #tp, userLimit", //specifies the attributes you want in the scan result. 
    FilterExpression: "locationLon between :lower_lon and :higher_lon and locationLat between :lower_lat and :higher_lat", 
    ExpressionAttributeNames: { 
     "#nm": "name", 
     "#tp": "type", 
    }, 
    ExpressionAttributeValues: { 
     ":lower_lon": {"N": event.low_lon}, 
     ":higher_lon": {"N": event.high_lon}, //event.high_lon} 
     ":lower_lat": {"N": event.low_lat}, 
     ":higher_lat": {"N": event.high_lat} 
    } 
}; 

    db.scan(params, function(err, data) { 
    if (err) { 
     console.log(err); // an error occurred 
     } 
    else { 
     data.Items.forEach(function(record) { 
      console.log(
       record.name.S + ""); 
     }); 
     context.succeed(data.Items); 


     } 
    }); 
}; 
+1

何を試しましたか?あなたのコードはどのように見えますか?エラーメッセージが表示されましたか? – SunSparc

+0

私のコードには問題ありません。私はちょうどその問題を解決する方法を知らない。ちょうど私の質問にそれを含める場合。 –

+0

制限が動作する – Shibashis

答えて

0

私はあなたがすでにこの背後にある理由を知っていると思います。 thisに従って、

ScannedCount - 照会またはスキャンされたアイテムの数、任意のフィルタ式前 を結果に適用しました。

件数 - 応答で返されたアイテムの数が 件です。

そのための修正は右この上に文書化されています。Queryまたはスキャン動作のいずれかに

操作は、テーブル内のすべての一致するアイテムを返さなかった場合は、DynamoDBのはLastEvaluatedKey値を返すことがあります。一致するアイテムの完全な数を取得するには、直前のリクエストからLastEvaluatedKey値を取り出し、次のリクエストでExclusiveStartKey値として使用します。 DynamoDBがLastEvaluatedKey値を返さなくなるまでこれを繰り返します。

だから、あなたの質問への答えは次のとおりです。DynamoDBの応答と再びScanからLastEvaluatedKeyを使用しています。

関連する問題