【问题标题】:DynamoDB: Is it possible to get the last element in the list datatype?DynamoDB:是否可以获取列表数据类型中的最后一个元素?
【发布时间】:2021-06-22 16:03:58
【问题描述】:

我的文档如下所示:

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

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

【问题讨论】:

  • 先显示您的查询。
  • 我使用 boto3。所以,我的想法是使用 get_item 和使用 id=123 的投影表达式,然后使用 python 的列表理解来获取第一个/最后一个项目。我找不到任何与 mongo 的切片运算符等效的东西。如果您想确认,这不是作业问题。

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2023-03-04
      • 2015-07-09
      • 1970-01-01
      • 1970-01-01
      • 2017-02-18
      • 1970-01-01
      • 1970-01-01
      • 2022-01-01
      • 2012-10-21
      相关资源
      最近更新 更多