2017-10-02 2 views
0

私はこのような私のDynamoDBの中のオブジェクトがあります。私は、少なくとも1人は名前ジョンを持っているすべてのオブジェクトを検索するために使用するどのようなフィルタ表現DynamoDBをネストされたリストのプロパティでスキャンすることはできますか?

{ 
    'id': '2d47218a-9a9b-45a6-acbc-152bc49e93ad' 
    'people': [ 
    { 
     'name': 'John', 
     'surname': 'Snow' 
    }, 
    { 
     'name': 'John', 
     'surname': 'Smith' 
    }, 
    { 
     'name': 'James', 
     'surname': 'Bond' 
    }, 
    ] 
} 

を?

は、私はこのような試みの何かを持っているが、それは動作しません:

DynamoDBScanExpression expression = new DynamoDBScanExpression() 
       .withFilterExpression("people.name = :name") 
       .withExpressionAttributeValues(
         ImmutableMap.of(":name", new AttributeValue().withS("John") 
       .withConsistentRead(true); 
     DynamoDBMapper dynamoDBMapper = new DynamoDBMapper(amazonDynamoDB); 

     PaginatedScanList<Person> scan = dynamoDBMapper.scan(Person.class, expression); 

答えて

0

残念ながら、これはDynamoDBの上不可能であるオブジェクトが複雑な構造であるとして(すなわち、DynamoDBの用語は、リスト内MAP)。あなたはを使用するために、両方のnamesurname属性値を必要とする

は、アイテムをフィルタリングする機能が含まれています。

属性値がnameの場合、その項目をフィルタリングすることはできません。

リストにはCONTAINSがサポートされています。「aコンテナb」を評価する場合、「a」 はリストになります。ただし、「b」は、セット、マップ、またはリストにすることはできません。

関連する問題