gpt4 book ai didi

java - 如何使用 AWS Java SDK 按降序从 DynamoDb 获取项目?

转载 作者:行者123 更新时间:2023-12-02 09:42:35 25 4
gpt4 key购买 nike

我在 AWS DynamoDB 中有一个名为 accountantHistoric 的表。它具有主分区键 (id) 和主排序键 (tenant_id)。我还创建了另一个索引,称为“ExpirationDate”。该索引的排序键是“expirationDate”(字符串)属性。我想要的是:根据storeId(该字段不是键)获取itens,并根据“expirationDate”(从最新到最旧)按降序排列tenant_id。我也在制作分页。

我正在尝试使用下面的代码,但它没有按降序返回。

我需要改变什么?

谢谢大家!

public AccountantEmailHistoricInfo getHistoric(String storeId, int page, int countReg, int fixedPage) {
Condition conditionStoreId = new Condition().withComparisonOperator(ComparisonOperator.EQ)
.withAttributeValueList(new AttributeValue().withS(storeId));

Condition conditionTenantId = new Condition().withComparisonOperator(ComparisonOperator.EQ)
.withAttributeValueList(new AttributeValue().withS(TenantIdentifierLocalThread.getTenantIdentifier()));

final DynamoDBScanExpression scanPageExpression = new DynamoDBScanExpression()
.withFilterConditionEntry("tenant_id", conditionTenantId)
.withFilterConditionEntry("storeId", conditionStoreId)
.withIndexName("ExpirationDate")
.withLimit(countReg);

List<AccountantEmailHistoric> accountantEmailHistoricList = new ArrayList<>();
int i = 0;

do {
ScanResultPage<AccountantEmailHistoric> scanPage = mapper.scanPage(AccountantEmailHistoric.class, scanPageExpression);
scanPageExpression.setExclusiveStartKey(scanPage.getLastEvaluatedKey());

if (i == page) {
accountantEmailHistoricList.addAll(scanPage.getResults());
}
i++;
} while (scanPageExpression.getExclusiveStartKey() != null);

final DynamoDBScanExpression scan = new DynamoDBScanExpression()
.withFilterConditionEntry("tenant_id", conditionTenantId)
.withFilterConditionEntry("storeId", conditionStoreId);

AccountantEmailHistoricInfo info = new AccountantEmailHistoricInfo(accountantEmailHistoricList);
info.setPage(fixedPage);
info.setTotalRecords(mapper.scan(AccountantEmailHistoric.class, scan).size());
return info;
}

最佳答案

您需要query ,而不是扫描。然后您可以将 ScanIndexForward 设置为 false。

关于java - 如何使用 AWS Java SDK 按降序从 DynamoDb 获取项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56941051/

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