首页 文章

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

提问于
浏览
1

在DynamoDB中有一种方法可以保证完全 n 结果
如果我指定限制和过滤器,则返回?

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

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

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

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

我不想使用 Scan ,因为 Scan 总是搜索表格中的每一项(不论限制 - 如果我错了,请纠正我) .

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

1 回答

  • 1

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

相关问题