How do I delete from DynamoDB List of Maps, by Map attribute value in said List?
I've run into this issue a few times now, and unfortunately there's no straightforward solution. The two most common workarounds I've come across are:
A. use a map instead of a list, you can reference the favorite directly in your update expression now using #favorites.#entityId
. If order is important, add an order attribute to each map. In your data access layer is where you would need to do your conversions to/from the desired array type.
{
"userId": "2",
"favorites": {
"558da3de395b1aee2d6b7d2b": {
"createdAt": 1448998673852,
"entityId": "558da3de395b1aee2d6b7d2b",
"type": "media",
},
// ... more entities here
}
}
B. use one-to-many tables instead, see http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GuidelinesForItems.html