gpt4 book ai didi

pagination - DynamoDB queryPage 操作与 FilterExpression 返回空结果以及 lastEvaluatedKey

转载 作者:行者123 更新时间:2023-12-01 06:07:22 26 4
gpt4 key购买 nike

按照我的理解。
查询操作将在提到的索引上寻找结果,直到满足以下条件之一

  • 结果集已用完。
  • 检索到的项目数达到 Limit 参数的值(如果已指定)。
  • 检索的数据量达到 1 MB 的最大结果集大小限制。
    记录 Here

  • 因此,DynamoDB 查询将根据上述条件获取结果,然后它会应用 FilterExpression,因此它很可能不会向您返回任何结果,因此它将返回空集和 LastEvaluatedKey

    但我也在 documentation 中阅读了以下内容

    Unlike a Scan operation, a Query operation never returns both an empty result set and a LastEvaluatedKey value.



    有人可以帮助解释上述文档声明的实际含义吗?

    因为在实践中我使用 查询页面 API 与 限制过滤表达式 我得到了相反的结果,即我得到了一个空集以及 LastEvaluatedKey。

    我的上述理解是否正确?是否可以同时获得空结果和 lastEvaluatedKey 值?或者我错过了一些东西,因为我得到了空的结果? (根据文档,我不应该得到它。如果我没有得到空结果,那就太好了)

    最佳答案

    我也和你一样遇到同样的问题,阅读文档后,我发现以下描述解释了原因。根据亚马逊文档,“在查询操作中,DynamoDB 按排序顺序检索项目,然后使用 KeyConditionExpression 和任何可能存在的 FilterExpression 处理项目。”

    所以它解释了为什么你会得到这些结果。过滤操作是在查询结果之后处理的,所以不管你是否应用FilterExpression,Query操作都没有区别,这就是为什么你看到lastEvaluatedKey出现的原因,和没有应用FilterExpression的没有区别。

    所以实现你想要的唯一可能的方法是使用全局二级索引,你想要过滤的列,你可以把它作为排序键。在这种情况下,您可以使用RangeKeyCondition() 进行查询。

    关于pagination - DynamoDB queryPage 操作与 FilterExpression 返回空结果以及 lastEvaluatedKey,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36912408/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com