DynamoDB:是否可以获取list数据类型中的最后一个元素?

时间:2017-06-18 18:50:28

标签: amazon-web-services amazon-dynamodb boto boto3 nosql

我的文档如下所示:

{'id': 123,
 'favorites': [5, 3, 7, 8, 1, 9, 2]}

在本文档中,收藏夹是列表类型。我想查询最新的收藏或第一个/最后5个收藏。我不确定如何在DynamoDB中实现这一点。请帮忙。

2 个答案:

答案 0 :(得分:0)

在寻找这个问题一段时间之后,遗憾的是DynamoDB不支持它。可能是,它将来会得到支持。

答案 1 :(得分:0)

在当前(2021 年 6 月 22 日)example of documentation 中,他们使用 size(info.actors) 来获取大小。

你可以这样做:

ConditionExpression='#list[0] = :num',
ConditionExpression='size(#list) = :num',

但是,您不能这样做:

ConditionExpression='#list[ size(#list)-1 ] = :num',

根据 boto3 documentation,看起来不可能得到最后一个元素。

迄今为止我发现的最佳解决方法是:

  • 反转所有列表,然后使用 #list[0]
  • 使用contains(#list, :elem)