如何在Dynamodb中使用具有多个条件的FilterExpression

时间:2016-06-09 07:59:48

标签: amazon-dynamodb boto3

我正在尝试对dynamodb进行表扫描 以下是javascript中的代码

var params = {
    TableName: 'Contacts',
    FilterExpression: 'begins_with(CustomerName,:value)OR begins_with(CustomerName,:val) ', 
    ExpressionAttributeValues: { 
        ':value': {'S':'S'},
        ':val':{'S':'E'},
      },
    Select: 'ALL_ATTRIBUTES', 
 };

 dynamodb.scan(params, function(err, data) {
    if (err) ppJson(err); // an error occurred
    else ppJson(data); // successful response
});

但我无法使用botot3尝试相同的方法。

以下是我目前可以实现的目标

response = table.scan(
                  Select= 'ALL_ATTRIBUTES',
                  FilterExpression=Attr('CustomerName').begins_with("S") 
                  )

我无法理解如何添加OR条件。如果我添加,则显示错误

2 个答案:

答案 0 :(得分:17)

对于AND'&'用于和'''|'使用

  response = table.scan(
              Select= 'ALL_ATTRIBUTES',
              FilterExpression=Attr('CustomerName').begins_with("S") | Attr('CustomerName').begins_with("S") 
              )

答案 1 :(得分:0)

你可以创建一个字符串compare = [“a = b”,“c starts_with val']然后用'和'连接它们.join(比较)

为您创建过滤器表达式'a = b和c starts_with val'