【问题标题】:Does DynamoDB have a default/no-op FilterExpression?DynamoDB 是否有默认/无操作 FilterExpression?
【发布时间】:2019-09-21 10:33:04
【问题描述】:

我想使用 Boto3 扫描一个小型 DynamoDB 表,并可选择允许此代码的调用者指示何时应将可选条件应用于此扫描。

在代码中这样做会很方便:

scan_kwargs = {'Select': 'ALL_ATTRIBUTES'}
filter_exp = ''  # WHAT DO HERE?
if condition1:
    filter_exp &= Attr('attribute').is_in(['blah', 'bloop'])
if condition2:
    filter_exp &= Attr('deleted').is_eq(True)
scan_kwargs.update({'FilterExpression': filter_exp})
response = table.scan(**scan_kwargs)

我正在尝试确定是否可以将 FilterExpression 设置为默认值(在上面的评论中指出),以便在没有应用过滤器时进行扫描。

据我所知,这是不可能的。

【问题讨论】:

    标签: python amazon-web-services amazon-dynamodb boto3


    【解决方案1】:

    有点斗志昂扬,但我想我可以做到......

    filter_exp = Attr('pKey').exists()
    

    ...其中pKey 是表中的主键或其他必填字段。

    这绝对不是“正确”的解决方案,但可能是我可以有条件地构建的最可靠的无操作过滤器。

    如果我对 the documentation 的解释是正确的,那么无论过滤器表达式如何,扫描操作都会消耗相同数量的读取容量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-26
      • 1970-01-01
      • 2022-01-14
      • 2017-12-19
      • 2021-03-06
      • 2018-06-20
      相关资源
      最近更新 更多