2017-01-27 44 views
0

我想知道是否可以根據DynamoDBDocuments集合中的屬性進行篩選/掃描。比方說,我有這樣的:DynamoDb - 基於DynamoDBDocument集合中的屬性進行篩選或掃描

@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; 
} 

讓我們假設我想找到具有一個或多個項目,其中產品是「小工具」的所有訂單。我相信答案是否定的。用關係數據庫,我會做: 選擇o從接單O,的OrderItems哪裏o.id = i.id和一,產品=「部件」

會更好的做法是把訂單的產品自己表並在其中具有orderId屬性,然後根據產品查詢訂單項,然後根據訂單ID獲取訂單?

回答

0

如果您使用地圖而不是@DynamoDBAttribute items的列表,其中地圖的關鍵字爲product,那麼您可以使用篩選器表達式attribute_exists(items.widgets)進行向下選擇。