AWS DynamoDB Scan filterExpression - 简单数字比较

Zig*_*rth 7 expression amazon-web-services amazon-dynamodb

我正在尝试使用过滤器表达式进行简单的dynamoDB扫描(此处有文档)

这是我的表达式字符串:

"attribute_exists("my_db_key") AND ("my_db_key" = 1)"
Run Code Online (Sandbox Code Playgroud)

这简单地说明:

"如果my_db_key的值存在且my_db_key EQUALS 1,则在结果中返回"

但它不起作用,我得到一个错误:

Invalid FilterExpression: Syntax error; token: "1", near: "= 1)
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用属性值占位符来表示值,然后在表达式中使用它,但我不想这样做.根据亚马逊的文档,它不是必需的.

那我该怎么做这个简单的表达呢?有没有人有文档的示例或链接?不幸的是,亚马逊的文档没有任何帮助.

注意:我在iOS上用AWSDynamoDBScanInput实现这个,但我的问题是与全局表达式语法有关,所以它应该没关系.

Nat*_*ate 5

您的参数需要看起来像这样(对于 Node AWS 库):

params = {
  "FilterExpression": 'attribute_exists("my_db_key") AND ("my_db_key" = :value)',
  "ExpressionAttributeValues": {
    ":value": 1
  },
  // ...
};

docClient.scan(params, function(err, data){
  // Handle err or process data
})
Run Code Online (Sandbox Code Playgroud)

对于某些语言,参数应该更像这样:

{
  "FilterExpression": 'attribute_exists("my_db_key") AND ("my_db_key" = :value)',
  "ExpressionAttributeValues": {
    ":value": {"N":1}
  },
  // ...
};
Run Code Online (Sandbox Code Playgroud)


Max*_*Max 2

您必须使用占位符并单独传递值。以下是一些 文档来自 AWS 论坛的帖子