在DynamoDB中有一种方法可以保证确切的n
结果将是
如果我指定限制和过滤器,则会返回吗?
我看到的问题是文档声明:
在响应中,DynamoDB返回所有匹配的结果 极限值的范围。例如,如果您发出查询或扫描 请求限制值为6且没有过滤器表达式, DynamoDB返回表中与之匹配的前六项 请求中指定的关键条件(或仅前六项) 在没有过滤器的扫描的情况下)。如果你还提供一个 FilterExpression值,DynamoDB将返回第一个项目 六,也符合过滤要求(结果数量 返回将小于或等于6)。
因此,这意味着将检索6个项目,然后应用过滤器。我怎样才能继续搜索,直到我得到'6'项? (理想情况下,查询中有一些设置可以继续运行,直到达到限制 - 或已达到耗尽)
例如,假设我进行查询以获得50个人,其名称为“john”,Dynamo将返回50个人,然后应用“john”过滤器。现在只有3人返回。 有没有办法可以确保它会一直搜索到满足50的限制?
我不想使用Scan
因为Scan
始终搜索表格中的每个项目(无论限制如何 - 如果我错了,请更正我在此)。
如何在满足限制之前懒惰地进行查询过滤?如何在限制满足之前继续搜索?
答案 0 :(得分:1)
如果您可以在查询本身中进行过滤,那么这将是最好的,因为您不必使用过滤器表达式。但是,如果你不能,发电机工作的方式,我怀疑意味着过滤器只是扫描结果 - 基本上是一种节省带宽的方法,而不是更多。您仍然可以使用分页来获得更多结果;如果您使用的是Dynamo,您可能会关心查询的速度,因此控制您实际执行的查询数量(以及它们的大小)是一件好事。