如何在dynamodb中对查询结果设置限制

sun*_*tri 2 go amazon-dynamodb

我有一个要求,即在 Dynamodb 中查询表时只需要返回一行。我可以在 aws-cli 中看到一个名为“max-items”的参数,它显然限制了查询的结果大小。这是示例查询:

aws dynamodb query --table-name testTable --key-condition-expression "CompositePartitionKey = :pk" 
--expression-attribute-values '{ ":pk": { "S": "1234_125" }, ":ps": { "S": "SOME_STATE" }
    }' 
--filter-expression 'StateAttribute IN (:ps) AND attribute_not_exists(AnotherAttribute)' 
--index-name GSI_PK_SK --endpoint-url http://localhost:8000    --max-items 1
Run Code Online (Sandbox Code Playgroud)

但是我无法在 Go 中找出任何类似的关键字/属性。

以下是我能找到的相关内容:如何设置 DynamoDB 使用 Java 返回的匹配项的限制?

Nad*_*'El 6

正如您在 DynamoDB 对“查询”操作的官方描述中所看到的 - https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Query.html - 您正在寻找的参数是“限制”。请查阅 Go 库的文档,了解如何将此参数传递给查询。

顺便说一句,请注意 Limit 并没有完全限制返回结果的数量,而是限制在服务器端读取的行数。如果您的查询有过滤器,它可以返回少于限制结果。我不知道这对你来说是否重要。

  • 感谢您的答复。您正确地提到了“限制”的作用。**但我的用例与 Limit 不同。我想限制查询评估后返回的结果(类似于 Mysql 中的 limit 作用)** 但是 Dynamodb 中的“Limit”作用是,它将要评估的行限制为给定的限制大小(在这种情况下我什至可能无法从查询中获得任何结果,即使数据库中实际上有相关行)。另一件事,我使用的是 1.13.1 版本的 Go,我没有看到文档中提供任何这样的方法/方式。进一步的帮助表示赞赏。 (3认同)