我有以下列表示例:
=if(OR(AND(Field1>=400000,Field1<>440400,Field1<>440600,Field1<>440300),
AND(Field5<110,Field5>105))
我想删除地图:{
"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"
}
。
我正在考虑一个UpdateItem查询,我查看了REMOVE表达式文档(http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.Modifying.html),但除了通过索引值从List中删除项目之外,我似乎看不到任何示例.... / p>
答案 0 :(得分:2)
我现在已经遇到过这个问题几次,不幸的是,没有直接的解决方案。我遇到的两个最常见的解决方法是:
一个。使用地图而不是列表,您可以使用#favorites.#entityId
直接在更新表达式中引用收藏夹。如果订单很重要,请为每个地图添加订单属性。在您的数据访问层中,您需要进行所需数组类型的转换。
{
"userId": "2",
"favorites": {
"558da3de395b1aee2d6b7d2b": {
"createdAt": 1448998673852,
"entityId": "558da3de395b1aee2d6b7d2b",
"type": "media",
},
// ... more entities here
}
}
B中。请改用一对多表,请参阅http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GuidelinesForItems.html
答案 1 :(得分:0)
我以前在Python中使用Boto3库而不是在Javascript中完成此操作。我有一个link到Javascript删除项功能。我在Python中做的是我queried我的表项目,并列出我想要删除的对象的主键,并调用删除功能。
答案 2 :(得分:-1)
您应该将对象序列化为可以使用的对象,修改它以删除该条目,然后使用update-item保存更改。
我不是node.js用户,但是你是如何创建对象的呢?你手工制作json字符串吗?如果是这样你就不应该。有些库可以处理json,并且可以让你轻松修改它们,然后通过更改获得生成的json字符串。