首页 > 解决方案 > DyanmoDB 查询以使用非分区键获取项目

问题描述

我需要根据订单 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"
         }
     }

标签: javaamazon-web-servicesamazon-dynamodbaws-sdkdynamodb-queries

解决方案


不要Scan一个Query https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Scan.html

当您进行扫描时,您AttributeValue需要成为一个String Set,而不仅仅是一个String

在您使用FilterExpressionhttps://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Condition.html 的条件CONTAINSAttributeValue


推荐阅读