Gab*_*nha 9 amazon-web-services node.js amazon-dynamodb
我需要在DynamoDB上进行限制扫描和条件扫描.
该文件说:
在响应中,DynamoDB返回Limit值范围内的所有匹配结果.例如,如果发出限制值为6且没有过滤器表达式的查询或扫描请求,DynamoDB将返回表中与请求中指定的键条件匹配的前六项(或仅返回前六项)扫描没有过滤器的情况).如果还提供FilterExpression值,DynamoDB将返回前六个中与过滤器要求匹配的项目(返回的结果数将小于或等于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);
}
});
Run Code Online (Sandbox Code Playgroud)
表XXXX定义:
在上面的代码中,如果我删除Limit参数,DynamoDB将返回符合过滤器要求的项目.所以,条件还可以.但是当我用Limit参数扫描时,结果是空的.
XXXX表有5个项目.只有2个第一个具有该Removed属性.当我在没有Limit参数的情况下扫描时,DynamoDB会返回没有Removed属性的3个项目.
我做错了什么?
Mar*_*k B 16
来自您引用的文档:
如果您还提供FilterExpression值,DynamoDB将返回前六个中与过滤器要求相匹配的项目
通过组合Limit和FilterExpression,您已告知DynamoDB仅查看表中的前两项,并针对这些项评估FilterExpression.DynamoDB中的限制可能会令人困惑,因为它与limitRDBMS中的SQL表达式的工作方式不同.
小智 5
也遇到了这个问题,我猜你只需要扫描整个表到最大 1 MB
扫描 每次调用扫描的结果集限制为 1 MB。您可以使用LastEvaluatedKey扫描响应来检索更多结果。
http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html
| 归档时间: |
|
| 查看次数: |
12620 次 |
| 最近记录: |