当前位置: 首页 > 知识库问答 >
问题:

扫描DynamoDB表时未显示ProjectionExpression中指定列的结果

慕容雅珺
2023-03-14

我正在尝试扫描DynamoDB故事,以便只获取筛选过的项。myTable有3列:L timestamp(String,PK),colors(String),userId(String)

var docClient = new AWS.DynamoDB.DocumentClient();

var params = {
    "TableName": "myTable",
    "ProjectionExpression": "colors, userId",
    "ExpressionAttributeValues": {":val": userId},
    "FilterExpression": "userId = :val"

};

console.log("Scanning table.");
docClient.scan((params), function(err,data){

    if (err) console.log(err, err.stack); 
    else console.log(data); //success response
});

因此,我只从userId列获取值。完全忽略列“colors”。

我做错了什么?

共有1个答案

蓬长恨
2023-03-14

ExpressionAttributeNames中设置ProjectionExpression属性。请查看以下代码片段

var docClient = new AWS.DynamoDB.DocumentClient();

 var params = {
  ExpressionAttributeNames: {
   "#colors": "colors", 
   "#userId": "userId"
  }, 
  ExpressionAttributeValues: {
    ":val": userId
  }, 
  FilterExpression: "userId = :val", 
  ProjectionExpression: "#colors, #userId", 
  TableName: "myTable"
 };

console.log("Scanning table."); 

docClient.scan(params, function(err, data) {
    if (err) console.log(err, err.stack); 
    else console.log(data); //success response
});

注意#:必须分别出现在ExpressionAttributeNamesExpressionAttributeValues上。

 类似资料:
  • 我正在执行对DynamoDB表的扫描,然后我需要将返回项中的相应属性添加到类型的列表中(具有单个构造函数)。代码当前成功扫描DB并返回扫描结果的。然而,由于某种原因,我的迭代似乎返回null。

  • 我尝试使用lambda AWS从DynamoDB获得满足条件的前10项。我试图使用极限参数,但它是(基于该网站) https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB.html#scan-财产 “要评估的最大项目数(不一定是匹配项目数)”。 如何获得满足我条件的10件首批产品?

  • 我有一个带有NodeJS 10.x的AWS Lambda。这个Lambda试图扫描基于“FilterExpression”的DynamoDB表。我正在使用DocumentClient执行“扫描”操作。尽管使用了各种方法,但我无法读取和迭代结果对象。 我尝试使用以下方法:

  • 这是我的用例: 我有一个带有200k对象的JSON Api。数据集看起来有点像这样:日期、自行车型号、以分钟为单位的生产时间。我使用Lambda从JSON Api中读取并通过超文本传输协议请求在DynamoDB中写入。Lambda函数每天运行并使用最新数据更新DynamoDB。 然后,我按日期检索数据,因为我想计算每天的平均生产时间,并将其放在第二个表中。Alexa技能连接到第二个表,并读取每天的

  • 正如使用boto3完全扫描dynamoDb中所解释的,我构建了一个解决方案,使用某些条件完全扫描dynamoDb表。这是我的代码: 但是当代码被执行时,它会进入一个无限循环。这是LastEvaluatedKey每次迭代的输出: 它一直在这两对之间循环。 编辑: 我添加了do_scan方法。

  • 我们有一个设置,其中各种工作节点执行计算并更新DynamoDB表中的相对状态。该表充当工作节点活动的一种历史记录。看门狗节点需要定期扫描表,并构建一个表示工作节点及其作业的当前状态的对象。因此,我们的应用程序能够扫描表并按时间顺序检索数据(即按时间戳排序)是很重要的。表最终会太大,无法扫描到本地内存进行后期排序,所以我们扫描后无法排序。 从AWS留档读取主键: DynamoDB使用分区键值作为内部