这可能是两个单独的问题。但那是我目前的用例。我有一个具有特定属性的POJO。
看起来像是:
class MyObject {
String id;
String name;
int size;
getters and setters () ....
}
现在我有一个这些对象的列表 - 我希望在Dynamo中存储一个列表。像
这样的东西RecordID Attributes
abcd123 List<MyObject>
我可以用上述格式将数据存储在Dynamo中吗?我的第二个问题与上述用例有关。
现在我已经存储了记录,我可以检索列表的特定部分吗?就像,我希望从DyanmoDBQuery请求返回索引0 - 5而不是整个列表本身。
这可能吗?
我是DynamoDB的新手,我不确定支持在Dynamo中存储自定义对象的程度。
答案 0 :(得分:0)
如果您能够按摩架构并转到Partition-Sort键架构,其中Partition键是RecordID,Sort键是ItemNumber,其中Item number是abcd123
中每个MyObject的索引在上面的列表中,您可以获得带有范围查询的子列表:
项目示例:
RecordID (partition key) asdfasdfadsf
ItemNumber (sort key) 0
Item an instance of MyObject
范围查询参数:
KeyCondition: RecordId = :rid AND ItemNumber BETWEEN :lower AND :upper
ExpressionAttributeValues = { ":rid": "asdfasdfasdf", ":lower": 0, ":upper": 5 }
请注意,:upper
边界是包含的,因此上面的查询示例将返回带有RecordId=asdfasdfasdf
的MyObjects,其中ItemNumbers为0,1,2,3,4和5.
答案 1 :(得分:0)
您可以通过为要存储在列表中的对象创建一个类的类并使用@DynamoDBDocument对其进行批注来实现。
public class ObjectThatHasTheList {
private List<ObjectInTheList> list;
@DynamoDBAttribute(attributeName = "list")
public List<ObjectInTheList> getList() {
return list;
}
// setter
}
下面是要存储在列表中的对象的类。
@DynamoDBDocument
public class ObjectInTheList {
private String id;
@DynamoDBAttribute(attributeName = "id")
public String getId() {
return id;
}
}