在给定过滤器表达式的情况下,确保Dynamo检索* n *个结果

时间:2015-07-03 21:56:53

标签: amazon-web-services amazon-dynamodb

在DynamoDB中有一种方法可以保证确切的n结果将是
如果我指定限制过滤器,则会返回吗?

我看到的问题是文档声明:

  

在响应中,DynamoDB返回所有匹配的结果   极限值的范围。例如,如果您发出查询或扫描   请求限制值为6且没有过滤器表达式,   DynamoDB返回表中与之匹配的前六项   请求中指定的关键条件(或仅前六项)   在没有过滤器的扫描的情况下)。如果你还提供一个   FilterExpression值,DynamoDB将返回第一个项目   六,也符合过滤要求(结果数量   返回将小于或等于6)。

因此,这意味着将检索6个项目,然后应用过滤器。我怎样才能继续搜索,直到我得到'6'项? (理想情况下,查询中有一些设置可以继续运行,直到达到限制 - 或已达到耗尽)

例如,假设我进行查询以获得50个人,其名称为“john”,Dynamo将返回50个人,然后应用“john”过滤器。现在只有3人返回。                                                                                                    有没有办法可以确保它会一直搜索到满足50的限制?

我不想使用Scan因为Scan 始终搜索表格中的每个项目(无论限制如何 - 如果我错了,请更正我在此)。

如何在满足限制之前懒惰地进行查询过滤?如何在限制满足之前继续搜索?

1 个答案:

答案 0 :(得分:1)

如果您可以在查询本身中进行过滤,那么这将是最好的,因为您不必使用过滤器表达式。但是,如果你不能,发电机工作的方式,我怀疑意味着过滤器只是扫描结果 - 基本上是一种节省带宽的方法,而不是更多。您仍然可以使用分页来获得更多结果;如果您使用的是Dynamo,您可能会关心查询的速度,因此控制您实际执行的查询数量(以及它们的大小)是一件好事。