我的数据库表由ID唯一的多行组成。
API(端点)->获取ID的行 我正在传递输入数组(id1,id2,id3,id4)
k = 0
for i,j in zip(x,y):
while k < len(xd) and xd[k] < i:
k += 1
if xd[k] == i:
newY[k] = j
我们可以使用扫描或查询。
感谢您的帮助。 预先感谢。
答案 0 :(得分:1)
扫描或查询不适用于此事务。
您应该迭代列表,并使用GetItem分别检索每个项目,这是获取项目最快,最便宜的方法。如果您希望执行并发请求,也可以使用BatchGetItem。
扫描将很慢且昂贵,因为它将评估表中的每个项目。但是,如果您坚持要使用它,只需扫描表并提供ScanFilter即可退还物品。
如果您使用查询,无论如何它将以与GetItem完全相同的方式运行。您将必须迭代ID列表。也就是说,在这种情况下,查询根本不适用。
答案 1 :(得分:0)
我在单个查询调用(dynamoDBMapper.SCAN)中实现了。示例如下
private List<Activity> getbyIds(List<UUID> Ids) {
List<Entity> activityEntityList = new ArrayList<Entity>();
List<AttributeValue> attList = Ids.stream().map(x -> new AttributeValue(x.toString())).collect(Collectors.toList());
DynamoDBScanExpression dynamoDBScanExpression = new DynamoDBScanExpression()
.withFilterConditionEntry("id", new Condition()
.withComparisonOperator(ComparisonOperator.IN)
.withAttributeValueList(attList));
PaginatedScanList<Entity> list = dynamoDBMapper.scan(Entity.class, dynamoDBScanExpression);
}