我有以下列表示例:
{
"favorites": [
{
"createdAt": 1448998673852,
"entityId": "558da3de395b1aee2d6b7d2b",
"type": "media"
},
{
"createdAt": 1448998789252,
"entityId": "558da3de395b1aee2d6b7d83",
"type": "media"
},
{
"createdAt": 1448998793729,
"entityId": "558da3de395b1aee2d6b7d99",
"type": "media"
},
{
"createdAt": 1448998813023,
"entityId": "558da3de395b1aee2d6b7daf",
"type": "media"
}
],
"userId": "2"
}
我想删除 map :"entityId": "558da3de395b1aee2d6b7d2b"
。
我正在考虑一个 UpdateItem 查询,我查看了 REMOVE 表达式文档 (http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.Modifying.html),但除了按索引值从列表中删除项目之外,我似乎看不到任何示例......
最佳答案
我已经遇到过几次这个问题,不幸的是没有直接的解决方案。我遇到的两种最常见的解决方法是:
A.使用 map 而不是列表,您现在可以使用 #favorites.#entityId
在更新表达式中直接引用收藏夹。如果 order 很重要,请为每个 map 添加 order 属性。在您的数据访问层中,您需要在所需的数组类型之间进行转换。
{
"userId": "2",
"favorites": {
"558da3de395b1aee2d6b7d2b": {
"createdAt": 1448998673852,
"entityId": "558da3de395b1aee2d6b7d2b",
"type": "media",
},
// ... more entities here
}
}
B.请改用一对多表,见 http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GuidelinesForItems.html
关于javascript - 如何通过所述列表中的 map 属性值从 DynamoDB map 列表中删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34051638/