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

DynamoDB: Is it possible to get the last element in the list datatype?

我有如下文档:

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

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

在寻找这个问题一段时间后,很遗憾,DynamoDB 不支持它。可能吧,以后会支持的。

当前(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)