繁体   English   中英

如何限制 .NET 中 DynamoDB 中 context.Query 的结果数量

[英]How do I limit the number of results from context.Query in DynamoDB in .NET

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

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

这是当前的查询:

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

这将返回SecondaryId-index匹配matchId所有项目,但是我只想要它匹配的第一个项目。

所以我试过这个:

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

据我了解, context.Query (即使它很懒)仍将执行整个查询并至少读取第一页(使用.First()枚举时)并且该页面将包含多个项目,因此消耗的读取容量单位比必需的。

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

这甚至可能吗? 如果不是,那么在保持代码最少/干净的同时下一个最佳选择是什么?

不,这是不可能的。 数据模型模式非常愚蠢:它提供了一个方便的接口来执行常见的操作,而无需编写任何样板,以牺牲性能和控制为代价。

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

请记住, DynamoDbContext对于它的FromDocumentToDocument方法仍然很有用,这对于将对象序列化到/从客户端请求/响应中找到的属性字典(反)序列化是一个巨大的帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM