我需要根据订单ID(而不是分区键)从dynamodb获取项目。
如果订单ID为123456(如上述示例中所述),则应获得此商品。
有人可以让我知道是否有可能实现这一目标。如果是,怎么办?
DynamoDB表
@DynamoDBTable(tableName="SomeTable")
public class SomeTable {
private String id;
private String name;
private List<Order> orders;
@DynamoDBHashKey(attributeName="id")
public String getId() {
return id;
}
}
2级
@DynamoDBDocument
public class Order {
private String id;
private String name;
}
DynamoDB表数据
"Items": [
{
"orders": {
"L": [
{
"M": {
"name": {
"S": "xyz"
},
"id": {
"S": "123456"
}
}
}
]
},
"id": {
"S": "789"
},
"name": {
"S": "abcd"
}
}
最佳答案
做一个Scan
而不是Query
https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Scan.html
扫描时,您的AttributeValue
必须是String Set
,而不仅仅是String
。
在您的FilterExpression
中,将条件CONTAINS
与AttributeValue
一起使用
https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Condition.html
关于java - DynamoDB查询以使用非分区键来获取项目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51760762/