【发布时间】:2019-09-26 00:29:12
【问题描述】:
我正在 DynamoDB 表中执行扫描功能,它运行良好。现在,我想限制应用过滤器后的结果。
我了解到,当我将 FilterExpression 和 Limit 结合使用时,DynamoDB 将先应用 Limit,然后再应用 FilterExpression。
有可能做一些相反的事情吗?第一个过滤器比应用限制?我试图避免在代码上这样做,因为它会返回比我需要的更多的数据。
【问题讨论】:
标签: amazon-dynamodb
我正在 DynamoDB 表中执行扫描功能,它运行良好。现在,我想限制应用过滤器后的结果。
我了解到,当我将 FilterExpression 和 Limit 结合使用时,DynamoDB 将先应用 Limit,然后再应用 FilterExpression。
有可能做一些相反的事情吗?第一个过滤器比应用限制?我试图避免在代码上这样做,因为它会返回比我需要的更多的数据。
【问题讨论】:
标签: amazon-dynamodb
在 DynamoDB 中没有解决方案,因为它不是为此类操作而设计的。
您可以改为使用 LastEvaluatedKey 对结果进行模拟过滤,尽管这也不是一种有效的操作,并且可能导致全表扫描。
查询操作可以返回一个空的结果集和一个 LastEvaluatedKey 如果为结果页面读取的所有项目都是 过滤掉。
要获取匹配项的完整计数,请使用 LastEvaluatedKey 来自上一个请求的值并将其用作 ExclusiveStartKey 下一个请求中的值。重复此操作,直到 DynamoDB 不再 返回 LastEvaluatedKey 值。
【讨论】: