如何从DynamoDB列表中删除地图列表中的Map属性值?
我有以下列表示例:
{ "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" }
我想删除地图: "entityId": "558da3de395b1aee2d6b7d2b"
。
我在想一个UpdateItem查询,我看过REMOVEexpression式文档( http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.Modifying.html ),但我似乎无法看到任何示例,除了通过索引值从列表中删除项目….
我现在已经遇到了这个问题几次,不幸的是没有简单的解决scheme。 我遇到的两个最常见的解决方法是:
A.使用地图而不是列表,您可以直接在您的更新expression式中使用#favorites.#entityId
引用collections#favorites.#entityId
。 如果订单很重要,则为每个地图添加订单属性。 在你的数据访问层,你需要做你的转换到/从所需的数组types。
{ "userId": "2", "favorites": { "558da3de395b1aee2d6b7d2b": { "createdAt": 1448998673852, "entityId": "558da3de395b1aee2d6b7d2b", "type": "media", }, // ... more entities here } }
B.改用一对多的表格,参见http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GuidelinesForItems.html
我以前在Python中使用Boto3库,但不使用Javascript。 我有一个链接到Javascript删除项目function。 我在Python中做的是,我查询了我的表的项目,并列出了我想要删除的对象的主键,并称之为删除function。
你应该把这个对象序列化成你可以使用的东西,修改它以删除这个条目,然后使用update-item来保存这些变化。
我不是一个node.js用户,但是你是如何创build对象的呢? 你手工制作JSON弦? 如果是这样,你不应该。 有一些库可以处理json,并且可以很容易地对它们进行修改,然后获取生成的jsonstring。
如何使用Node.jsparsingJSON?
- 如何快速构build大型分析服务器?
- 在这种情况下如何做容量控制?
- 为什么使用Limit和FilterExpression进行DynamoDB扫描不会返回符合filter要求的项目?
- 如何使用Lambda和DynamoDB在date范围之间扫描?
- 使用node.js更新expression式上的发电机数据库错误
- DynamoDB,使用AWS Lambda(NodeJS运行时)映射值的dynamicprimefaces更新
- node.js AWS dynamodb updateItem
- 我们如何根据索引更新dynamodb表(不是基于主键和范围键)
- 当我试图在cloudsearch上传一个文档时,我无法处理这个错误