【问题标题】:Dynamodb query not workingDynamodb 查询不起作用
【发布时间】:2015-04-18 17:16:40
【问题描述】:

我想在dynamodb 的多个列上执行query 我想搜索 4 个字段 rule0 这是独一无二的,因此 hash key, which_ruleGlobal Index, rule1Global Index, rule2Global Index

我先搜索rule0,然后搜索rule1,然后搜索rule2 我正在使用以下函数来匹配 rule1 导致找不到与 rule0 匹配的匹配项

function dynamoQueryRule1(rule0, rule1, funcQ) {
    which_rule = "rule1";
    var q = {
        "KeyConditions": {
            "rule0": {
                "ComparisonOperator": "EQ", 
                "AttributeValueList": [{
                        "S": rule0
                    }]
            }
        },
        "TableName": "tbl_scripts" + table_prefix, 
        "AttributesToGet": ['id'],
        "ConditionalOperator": "AND",
        "QueryFilter": {

                    "which_rule": {
                        "ComparisonOperator": "EQ",
                        "AttributeValueList": [{
                                "S": which_rule
                            }]
                    },
                    "rule1": {
                        "ComparisonOperator": "EQ",
                        "AttributeValueList": [{
                                "S": rule1
                            }]
                    }
        }
    };
    var params = {
        TableName: this.options.tbl_name
    };

但是这个函数永远不会得到rule1 的结果。甚至我已经在dymamo table 中创建了这些规则。 为了检查发电机数据,我检查了scan 它的工作正常,但scan 有 1mb 的限制并且不是我的问题的完美用例。 请帮我找到query 格式的错误。

【问题讨论】:

    标签: node.js amazon amazon-dynamodb


    【解决方案1】:

    检查您的响应对象是否有 [LastEvaluatedKey] != null。

    如果设置了 [LastEvaluatedKey],则表示您尚未查询整个数据集(同样是因为 1M 限制)。因此,您需要再次调用查询,在查询中设置 ExclusiveStartKey = 上一个响应中的 LastEvaluatedKey。 (将所有结果附加在一起)

    这个类似的问题显示了如何在 node.js 中执行此操作的语法: Recursive Fetch All Items In DynamoDB Query using Node JS

    【讨论】:

      猜你喜欢
      • 2020-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-30
      相关资源
      最近更新 更多