DynamoDB FilterExpression具有多个条件javascript

时间:2017-07-20 10:19:13

标签: javascript amazon-dynamodb

我有一个带分区键的表和排序键以及其他2列。我无法使用javaScript AWS SDK在DynamoDB中使用过滤器获取 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" 
};

3 个答案:

答案 0 :(得分:16)

查询格式中存在拼写错误(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" }; 之后) 为了保持清洁,请使用双引号或单引号,但不能同时使用两个引号。 我使用了双引号,就像那里的样本代码一样。

this

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

我的老板让我做一个不识别大小写和 HeLlo 搜索但找到相同记录的过滤器。

{
data={
id=123123,
name="hello"}
}