如何从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?