gpt4 book ai didi

java - 如何在 dynamodb getItem 中应用过滤器

转载 作者:行者123 更新时间:2023-12-02 01:15:43 24 4
gpt4 key购买 nike

我想使用 table.getItem(xxx)dynamoDB 获取特定项目,并且在获取项目时需要应用一些过滤器。

从 emp 中选择 *,其中 empid=1 且 isadmin=true;

如何在 dynamo-db 中编写上述查询。

下面是我尝试过的示例代码:

GetItemSpec spec = new GetItemSpec()
.withPrimaryKey("empid", "1", "deptno", "12");
Item outcome = table.getItem(spec);
System.out.pritnln("outcome "+outcome);

在上面的代码中,我想再应用一个过滤器,例如“isAdminU=true”请给我一些在 getItem(....) 中添加过滤器的建议。

注意:

我可以通过使用 table.query(spec) 来解决我的使用问题,但是此方法返回集合,我每次都必须解析并获取第一个项目,这在我的情况下不需要。

最佳答案

正如您所注意到的,DynamoDB 的 GetItem 操作接受过滤器。如果存在,它总是返回单个项目,因此通常不需要进行此类过滤。但是,如果您确实想要这样的过滤 - 例如,您的项目很大,如果它们没有通过您的过滤器,您不想浪费网络带宽来发送它们 - 正如您自己建议的那样,您可以使用 Query .

是的,Query 的响应格式与 GetItem 略有不同,但任何语言的任何 DynamoDB 库都可以获取响应中的第一个(也是唯一一个)项目琐碎的。如果您担心获得的内容可能会超过第一项,您可以随时设置 Limit=1,但如果您的关键条件确保只有一个项目匹配,则没有必要这样做。

您应该知道,无论您是在客户端执行无条件 GetItem 并进行过滤,还是在服务器端执行带有过滤器的 Query,在这两种情况下在这两种情况下,读取成本将与从磁盘读取整个项目相同。唯一的(很小的)差异可能在于网络带宽成本,并且只有当项目很大时,这才变得相关。

关于java - 如何在 dynamodb getItem 中应用过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58638057/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com