How to do Query in DynamoDB on the basis of HashKey and range Key?(如何在 DynamoDB 中根据 HashKey 和 range Key 进行查询?)
问题描述
我是 DynamoDb
的新手.我只想知道如何使用 hashKey
和 rangeKey
查询 DynamoDB 中的表.
I am new to DynamoDb
stuff. I just want to know how can we query on a table in DynamoDB with the hashKey
and rangeKey
.
假设我的表是 TestTable
,它的架构是这样的:
Let's say my Table is TestTable
and it's schema is something like this:
1.Id (HK of type String)
2 Date (RK of type String )
3 Name (attribute of type String)
现在如果我想根据 hashKey
查询这张表,这里是 Id
,我们将 query
设为:
Now If I want to query on this table on the basis of hashKey
which is Id
here, we make a query
as :
假设我的查询是获取所有具有 Id ="123" 的项目.
Let's say my query is to get all Items having Id ="123".
TestTable testTable = new TestTable();
testTable.setId("123");
DynamoDBQueryExpression<TestTable> queryExpression = new DynamoDBQueryExpression<TestTable>()
.withHashKeyValues(TestTable)
.withConsistentRead(false);
现在我想获取所有具有 Id ="123" 和 Date ="1234"
的项目.
Now I want to get all Items having Id ="123" and Date ="1234"
.
如何在DynamoDB
我使用 java
作为我的编程语言.
I am using java
as my programming language.
推荐答案
我前段时间写了一篇关于使用 AWS Java SDK 进行 DynamoDB 查询和索引的文章:http://labs.journwe.com/2013/12/15/dynamodb-secondary-indexes/
I wrote an article about DynamoDB queries and indexing using the AWS Java SDK some time ago: http://labs.journwe.com/2013/12/15/dynamodb-secondary-indexes/
在您的情况下,它应该像这样工作(请参阅 http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/JavaQueryScanORMModelExample.html):
In your case, it should work like this (see http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/JavaQueryScanORMModelExample.html):
AmazonDynamoDBClient client = new AmazonDynamoDBClient(new ProfileCredentialsProvider());
DynamoDBMapper mapper = new DynamoDBMapper(client);
String hashKey = "123";
long twoWeeksAgoMilli = (new Date()).getTime() - (15L*24L*60L*60L*1000L);
Date twoWeeksAgo = new Date();
twoWeeksAgo.setTime(twoWeeksAgoMilli);
SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
dateFormatter.setTimeZone(TimeZone.getTimeZone("UTC"));
String twoWeeksAgoStr = dateFormatter.format(twoWeeksAgo);
Condition rangeKeyCondition = new Condition()
.withComparisonOperator(ComparisonOperator.GT.toString())
.withAttributeValueList(new AttributeValue().withS(twoWeeksAgoStr.toString()));
Reply replyKey = new Reply();
replyKey.setId(hashKey);
DynamoDBQueryExpression<Reply> queryExpression = new DynamoDBQueryExpression<Reply>()
.withHashKeyValues(replyKey)
.withRangeKeyCondition("ReplyDateTime", rangeKeyCondition);
List<Reply> latestReplies = mapper.query(Reply.class, queryExpression);
查看 DynamoDB 文档的 Java 对象持久性模型部分了解更多信息.
Check out the Java Object Persistence Model section of the DynamoDB docs for more info.
这篇关于如何在 DynamoDB 中根据 HashKey 和 range Key 进行查询?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何在 DynamoDB 中根据 HashKey 和 range Key 进行查询?
基础教程推荐
- “未找到匹配项"使用 matcher 的 group 方法时 2022-01-01
- 在 Libgdx 中处理屏幕的正确方法 2022-01-01
- 如何使用 Java 创建 X509 证书? 2022-01-01
- FirebaseListAdapter 不推送聊天应用程序的单个项目 - Firebase-Ui 3.1 2022-01-01
- Java:带有char数组的println给出乱码 2022-01-01
- 减少 JVM 暂停时间 >1 秒使用 UseConcMarkSweepGC 2022-01-01
- 设置 bean 时出现 Nullpointerexception 2022-01-01
- 降序排序:Java Map 2022-01-01
- Java Keytool 导入证书后出错,"keytool error: java.io.FileNotFoundException &拒绝访问" 2022-01-01
- 无法使用修饰符“public final"访问 java.util.Ha 2022-01-01