我需要根据订单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中,将条件CONTAINSAttributeValue一起使用
https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Condition.html

关于java - DynamoDB查询以使用非分区键来获取项目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51760762/

10-09 07:03