gpt4 book ai didi

node.js - 为什么 DynamoDB 使用 Limit 和 FilterExpression 扫描不返回符合过滤器要求的项目?

转载 作者:IT老高 更新时间:2023-10-28 23:23:46 26 4
gpt4 key购买 nike

我需要在 DynamoDB 上使用限制和条件进行扫描。

docs说:

In a response, DynamoDB returns all the matching results within the scope of the Limit value. For example, if you issue a Query or a Scan request with a Limit value of 6 and without a filter expression, DynamoDB returns the first six items in the table that match the specified key conditions in the request (or just the first six items in the case of a Scan with no filter). If you also supply a FilterExpression value, DynamoDB will return the items in the first six that also match the filter requirements (the number of results returned will be less than or equal to 6).


代码(NODEJS):

var params = {
ExpressionAttributeNames: {"#user": "User"},
ExpressionAttributeValues: {":user": parseInt(user.id)},
FilterExpression: "#user = :user and attribute_not_exists(Removed)",
Limit: 2,
TableName: "XXXX"
};

DynamoDB.scan(params, function(err, data) {
if (err) {
dataToSend.message = "Unable to query. Error: " + err.message;
} else if (data.Items.length == 0) {
dataToSend.message = "No results were found.";
} else {
dataToSend.data = data.Items;
console.log(dataToSend);
}
});



表 XXXX 定义:

  • 主分区键:用户(编号)
  • 主排序键:标识符(字符串)
  • 索引:
    • 索引名称:RemovedIndex
    • 类型:GSI
    • 分区键:已删除(数字)
    • 排序键:-
    • 属性:全部


在上面的代码中,如果我删除 Limit 参数,DynamoDB 将返回符合过滤器要求的项目。所以,条件还可以。但是当我用 Limit 参数扫描时,结果是空的。

XXXX 表,有 5 个项目。只有 2 个第一具有 Removed 属性。当我在没有 Limit 参数的情况下扫描时,DynamoDB 返回没有 Removed 属性的 3 个项目。

我做错了什么?

最佳答案

来自您引用的文档:

If you also supply a FilterExpression value, DynamoDB will return the items in the first six that also match the filter requirements

通过结合 Limit 和 FilterExpression,您已告知 DynamoDB 仅查看表中的前两项,并针对这些项目评估 FilterExpression。 DynamoDB 中的限制可能会令人困惑,因为它与 RDBMS 中 SQL 表达式中的 limit 的工作方式不同。

关于node.js - 为什么 DynamoDB 使用 Limit 和 FilterExpression 扫描不返回符合过滤器要求的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38778506/

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