我想知道是否可以根据DynamoDBDocuments集合中的属性进行过滤/扫描。让我说我有这个:
@DynamoDBTable(tableName = "Orders")
public class Order {
@DynamoDBHashKey
@DynamoDBAutoGeneratedKey
private String id;
@DynamoDBAttribute
@DynamoDBTypeConverted(converter = LocalDateTimeConverter.class)
private LocalDateTime orderDate;
@DynamoDBAttribute
private Address shipTo;
@DynamoDBAttribute
private Address billTo;
@DynamoDBAttribute
private List<OrderItem> items;
}
@DynamoDBDocument
public class Address {
private String name;
private String street;
private String city;
private String state;
private String zip;
}
@DynamoDBDocument
public class OrderItem {
private String product;
private int qty;
private double itemCost;
}
让我们假设我想找到所有包含一个或多个产品的订单,其中产品是&#34;小部件&#34;。我相信答案是否定的。使用关系数据库,我会这样做: SELECT o FROM Orders o,OrderItems i WHERE o.id = i.id AND i.product =&#34; widgets&#34;
更好的做法是将订单商品放在自己的表中并在其中包含orderId属性,然后根据产品查询订单商品,然后根据订单ID获取订单?
答案 0 :(得分:0)
如果您使用地图而不是@DynamoDBAttribute items
的列表,其中地图的键是product
,那么您可以使用过滤器表达式attribute_exists(items.widgets)
进行下选。