【问题标题】:DynamoDB FilterExpression with multiple condition javascript具有多个条件 javascript 的 DynamoDB FilterExpression
【发布时间】:2022-05-03 01:39:25
【问题描述】:

我有一个带有分区键和排序键的表还有另外 2 个列。我无法使用 FilterExpression 在 DynamoDB 中使用 javaScript AWS SDK 获取具有 AND 的多个条件的项目。任何人都可以提供正确的代码来检索 FilterExpression 中具有多个条件的数据吗? 我的代码如下:

var params = {
    TableName: 'Department',
    KeyConditionExpression: '#company = :companyId'
    , ExpressionAttributeNames: {
        '#company': 'CompanyID',
        '#dType': 'DepartmentType',
        '#cTime': 'CreatedTime'
    }
    , ExpressionAttributeValues: {
        ':companyId': 'Test',
        ':deptType': dType,
        ':daysPrior': 1250456879634
    },FilterExpression: '#dType = :deptType AND #ts > :daysPrior' 
};

【问题讨论】:

    标签: javascript amazon-dynamodb


    【解决方案1】:

    您的查询格式存在拼写错误(CreatedTime 之后) 为了保持简洁,请使用双引号或单引号,但不能同时使用。 我使用了双引号,就像 aws 示例代码一样。

    var params = {
        TableName: "Department",
        KeyConditionExpression: "#company = :companyId", 
        ExpressionAttributeNames: {
            "#company": "CompanyID",
            "#dType": "DepartmentType",
            "#cTime": "CreatedTime" //here
        },
        ExpressionAttributeValues: {
            ":companyId": "Test",
            ":deptType": dType,
            ":daysPrior": 1250456879634
        },
        FilterExpression: "#dType = :deptType AND #ts > :daysPrior" 
    };
    

    【讨论】:

      【解决方案2】:

      如果您需要更复杂的过滤器表达式来扫描或查询您的 DynamoDB 表,您可以使用括号,例如:

      var params = {
          TableName: "Department",
          ...
          FilterExpression: "(not (#type <> :type and #company = :company)) or (#timestamp > :timestamp)",
          ...
      };
      

      注意:此示例过滤器表达式没有特定含义。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-28
        • 1970-01-01
        • 2019-04-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-26
        • 1970-01-01
        相关资源
        最近更新 更多