Amazon dynamodb 从dynamoDB列表数据类型中删除前几个条目
高级别要求:Amazon dynamodb 从dynamoDB列表数据类型中删除前几个条目,amazon-dynamodb,nosql,Amazon Dynamodb,Nosql,高级别要求: 可能有数百万用户 任何用户都可以喜欢其他用户 需要存储用户的位置跟踪数据。最多必须存储100个最新数据点 我正在考虑使用Dynamo DB来实现这一点,方法是将数据存储为以下格式(使用NOSQL的动机是快速检索,因为在一次get中,我将获得整个数据): userID是主键 查询要求如下: 应该可以添加或删除收藏夹 可能会出现一组新的时间戳GPS位置对,我需要将它们输入到用户的“lt”数据中。由于有100个LT数据点的限制,我也需要删除最旧的数据点 我非常确定(1)是直接使用列表
- 可能有数百万用户
- 任何用户都可以喜欢其他用户
- 需要存储用户的位置跟踪数据。最多必须存储100个最新数据点
var params = {
TableName : "Product",
Key : {
"product" : "IPhone 7+"
},
UpdateExpression : "REMOVE media[2]",
ConditionExpression: "media[2].id = :idvalue",
ExpressionAttributeValues: {":idvalue" : "3",
},
ReturnValues : "UPDATED_NEW"
};
"media": {
"L": [{
"M": {
"url": {
"S": "http://www.apple.com/iphone-6-plus/a.jpg"
},
"type": {
"S": "image"
},
"id": {
"S": "1"
}
}
}, {
"M": {
"url": {
"S": "http://www.apple.com/iphone-6-plus/b.jpg"
},
"type": {
"S": "image"
},
"id": {
"S": "2"
}
}
}, {
"M": {
"url": {
"S": "http://www.apple.com/iphone-6-plus/overvie
w.mp4 "
},
"type": {
"S": "video"
},
"id": {
"S": "3"
}
}
}]
}
数据:-
var params = {
TableName : "Product",
Key : {
"product" : "IPhone 7+"
},
UpdateExpression : "REMOVE media[2]",
ConditionExpression: "media[2].id = :idvalue",
ExpressionAttributeValues: {":idvalue" : "3",
},
ReturnValues : "UPDATED_NEW"
};
"media": {
"L": [{
"M": {
"url": {
"S": "http://www.apple.com/iphone-6-plus/a.jpg"
},
"type": {
"S": "image"
},
"id": {
"S": "1"
}
}
}, {
"M": {
"url": {
"S": "http://www.apple.com/iphone-6-plus/b.jpg"
},
"type": {
"S": "image"
},
"id": {
"S": "2"
}
}
}, {
"M": {
"url": {
"S": "http://www.apple.com/iphone-6-plus/overvie
w.mp4 "
},
"type": {
"S": "video"
},
"id": {
"S": "3"
}
}
}]
}
谢谢你。另一个查询是,如果“lt”列表中的每个条目都映射有时间戳和坐标的键值对,是否可以从“lt”列表中删除旧条目?{“timestamp”:234243434,“coord”:“2.34435,0.3342343”}因此,通过扫描表格,删除“lt”中时间戳早于某个值的列表项?这肯定有帮助。您能告诉我是否可以在没有条件表达式的情况下向列表中添加元素,并使用条件表达式列表一次性删除列表中的过时条目吗?恐怕没有,我只是想确认一下。我不想最后写一个cron来扫描并删除过时的条目(这不是太多了吗)。我可以保留100个左右的数据点用于位置跟踪。希望您能提供帮助。我可以运行一个查询,将另一个坐标条目附加到我的位置跟踪“lt”列表中,以添加到我以前的注释中。是否有一种方法可以删除列表中与条件表达式匹配的所有条目?如果我必须单独运行此查询,则可以。我的动机是删除“lt”列表中时间戳已过期(超过2天)或类似内容的过时条目。好的,我的上一个查询如何,我可以删除列表中与条件表达式匹配的所有条目吗?谢谢,你能给我一个示例,其中列表可能有以下数据点:{“timestamp”:234243434,“coord”:“2.34435,0.3342343”}我想删除时间戳小于X的列表项?