2016-05-03 37 views
0

我已经在Google上搜索了一段时间,但没有得到具体的答案。使用DynamoDB映射器进行多键查询

比方说,我有一个存储人员信息的表,它使用PeopleId作为散列键。有没有办法构建一个查询来返回人员,如果他的Id是1或2?

看起来我可以使用BatchGetItem来做这样的事情,但它会有更高的延迟?

回答

0

您不能在DynamoDB中拥有主键的分区键部分的任何条件。你可以在排序键上。

因此,您要么必须执行两次GetItem,要么使用BatchGetItem。

+0

谢谢!我只是发现有一个方法expression.withFilterExpression(“id = x或id = y”),但不知道这是否可以减少延迟.http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBMapper .Methods.html#d0e31877 – user3910794

+0

筛选器表达式不能应用于分区键,只能应用于排序键。对于DynamoDB查询,您必须拥有精确的分区键,并且不能有任何条件。 –

+0

嗨,尼克,我发现filterExpression适用于每一个属性,但它发生在从dynamoDB得到结果并且返回结果给客户端之前。您提到的条件适用于排序键和散列键,并有助于缩短延迟时间。谢谢! – user3910794

相关问题