[英]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
对于它的FromDocument
和ToDocument
方法仍然很有用,这对于将对象序列化到/从客户端请求/响应中找到的属性字典(反)序列化是一个巨大的帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.