Python:如何在使用dynamodb排序后获得位置/排名?
我目前正在尝试使用python中的扩展来获取索引的降序查询中的position\rank,下面是我想到的:Python:如何在使用dynamodb排序后获得位置/排名?,python,nosql,amazon-dynamodb,Python,Nosql,Amazon Dynamodb,我目前正在尝试使用python中的扩展来获取索引的降序查询中的position\rank,下面是我想到的: router.get('/'+USER_ROUTE+'/top', (req, res) => { POST.query() .usingIndex('likecount') .attributes(['id', 'likecount']) .descending() .loadAll() .exec((error, result) =
router.get('/'+USER_ROUTE+'/top', (req, res) => {
POST.query()
.usingIndex('likecount')
.attributes(['id', 'likecount'])
.descending()
.loadAll()
.exec((error, result) => {
if (error) {
res.status(400).json({ error: 'Error retrieving most liked post' });
}
//convert res to dict and sort dict by value (likecount)
res.json({position:Object.keys(result).indexOf(req.body.id)});
});
});
如您所见,我会将结果转换为ID和likecount的dict,然后对dict进行排序,然后得到我要查找的键的索引。
显然,这会在多个方面失败,速度慢/效率低(每次调用都会迭代数据库中的每个项),并且需要多个步骤
有没有更简洁的方法来实现这一点?
谢谢。没有比这更好的方法了。DynamoDB不适合用于需要复杂查询功能的场景
此外,单个查询操作对其可以读取的文档数量有严格限制;即使它确实支持这种查询,它也不适用于文档数量超过一次读取所能处理数量的情况。没有更好的方法可以做到这一点。DynamoDB不适合用于需要复杂查询功能的场景
此外,单个查询操作对其可以读取的文档数量有严格限制;即使它确实支持这种查询,它也不适用于文档数量超过一次读取所能处理数量的情况。DynamoDB不是为排行榜设计的。为此,您应该选择另一个DB。我建议您在您的案例中使用“DynamoDB”和“Redis”。您可以参考本文档了解Redis排行榜: 工作流程:
DynamoDB不是为排行榜设计的。为此,您应该选择另一个DB。我建议您在您的案例中使用“DynamoDB”和“Redis”。您可以参考本文档了解Redis排行榜: 工作流程: