J'ai une table appelée groupe et il aura des dossiers comme:DynamoDB requête pour Nested Jeu de l'objet
{
"id": "UniqueID1",
"name": "Ranjeeth",
"emailIdMappings": [
{
"emailId": "[email protected]",
"userId": 324
},
{
"emailId": "[email protected]",
"userId": 325
}
]
},
{
"id": "UniqueID2",
"name": "Ranjeeth",
"emailIdMappings": [
{
"emailId": "[email protected]",
"userId": 325
},
{
"emailId": "[email protected]",
"userId": 326
}
]
}
J'ai besoin d'interroger et d'obtenir le résultat si emailId contient la chaîne d'entrée. Je suis arrivé à ce jour et je ne suis pas en mesure d'obtenir le résultat
AttributeValue attributeValue = new AttributeValue("[email protected]");
Condition containsCondition = new Condition()
.withComparisonOperator(ComparisonOperator.CONTAINS)
.withAttributeValueList(attributeValue);
Map<String, Condition> conditions = newHashMap();
conditions.put("emailIdMappings.emailId", containsCondition);
ScanRequest scanRequest = new ScanRequest()
.withTableName("Group")
.withScanFilter(conditions);
amazonDynamoDB.scan(scanRequest)
dynamoDBMapper.marshallIntoObjects(Group.class, scanResult.getItems());
Pour le code ci-dessus, je me attends record avec id UniqueID1, mais il est vide. Si vous passez "[email protected]"
alors vous devriez obtenir les deux enregistrements. sdk utilisé est com.amazonaws:aws-java-sdk-dynamodb:1.11.155
J'ai essayé de poster la question dans le forum d'aws qui n'a pas aidé beaucoup.