【问题标题】:How to have FilterExpression with multiple conditions in dynamodb如何在 dynamodb 中使用具有多个条件的 FilterExpression
【发布时间】:2017-12-10 15:51:31
【问题描述】:

我正在尝试对 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 条件。如果我添加,它会显示错误

【问题讨论】:

    标签: amazon-dynamodb boto3


    【解决方案1】:

    用于 AND '&' 用于 OR '|'被使用了

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

    【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 你能再解释一下吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-28
    • 2019-04-04
    • 2017-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多