我如何限制context.Result的数量NET中DynamoDB中的查询

问题描述

我试图限制DynamoDB在查询表时返回的项目数。我只需要第一个匹配结果。

目标是减少消耗的读取单位数量,并努力保持代码的可读性,我正在使用context.Query查询二级本地索引并获得第一个匹配结果。

这是当前查询

context.Query<TableEntry>(matchId,new DynamoDBOperationConfig { IndexName = "SecondaryId-index" })

这将返回SecondaryId-indexmatchId匹配的所有项目,但是我只希望它与之匹配的第一个项目。

所以我尝试了这个:

context.Query<TableEntry>(matchId,new DynamoDBOperationConfig { IndexName = "SecondaryId-index" }).First()

据我了解,context.Query(尽管很懒)仍将执行整个查询并至少读取第一页(使用.First()进行枚举时),该页面将包含多个项目,因此消耗的读取容量单位超出了要求。

我找不到任何有关如何仅使用.NET中的context.Query查询限制为FirsT匹配项的文档。

那有可能吗?如果没有,那么在保持代码最少/干净的情况下,下一个最佳选择是什么?

解决方法

否,这是不可能的。数据模型模式非常笨拙:它提供了方便的界面来执行常见操作,而无需编写任何样板文件,但会降低性能和控制力。

您将需要使用低级DynamoDbClient。对于需要控制其请求的应用程序,您可能需要删除DynamoDbContext,而是在客户端周围创建自己的包装程序,以公开所需的任何请求属性。

请记住,DynamoDbContext仍可用于其FromDocumentToDocument方法,这在将对象与序列中的属性字典(反序列化)(反序列化)方面有巨大的帮助。客户的请求/响应。