【发布时间】:2018-07-28 00:12:22
【问题描述】:
我有一个“团队成员”表,主分区键为“team_id”,主排序键为“email”,GSI 为“email”作为分区键。
给定一个电子邮件列表,我想以最有效的方式找到列表中所有电子邮件的所有成员资格。
我知道对于一封电子邮件,我可以执行以下操作:
Membership membership = new Membership();
membership.setEmail(email.toLowerCase());
DynamoDBQueryExpression<Membership> expression = new DynamoDBQueryExpression<Membership>()
.withHashKeyValues(membership)
.withIndexName(EMAIL_INDEX)
.withConsistentRead(false);
return mapper.query(Membership.class, expression);
返回给定电子邮件的成员列表。
(所以对于我的电子邮件列表,我可以对列表中的每封电子邮件执行上述操作,但我想知道是否可以一步完成)。
我希望能够做类似的事情:
List<Membership> memberships = allEmails.stream().map(email -> {
Membership m = new Membership();
m.setEmail(email.toLowerCase());
return m;
}).collect(Collectors.toList());
DynamoDBQueryExpression<Membership> expression = new DynamoDBQueryExpression<Membership>()
.withHashKeyValues(memberships) // <--- passing a list
.withIndexName(EMAIL_INDEX)
.withConsistentRead(false);
这显然行不通。
有什么选择?
【问题讨论】:
-
您的发现是什么?我也遇到了同样的问题。到目前为止,也无法从 AWS 文档中找到。你有没有找到更好的解决方案?
-
抱歉,我没有找到更好的解决方案。