2017-05-03 9 views
0

私のDynamoDBに以下のデータがあります。DynamoDBのクエリに戸惑う

enter image description here

と私は以下の結果を達成するためにしようとしています。 テーブルをスキャンし、management is NULL and Location is Midwestの行を取得します。

最初にNullと一致する以下のクエリを試しました。

var scanningParameters = { 
    TableName: 'LOB', 
    FilterExpression: "#mgmt contains NULL", 
    ExpressionAttributeNames: { 
     "#mgmt": "Management", 
    } 
}; 

docClient.scan(scanningParameters, onScan); 
function onScan(err, data) { 
    if (err) { 
     console.error("Unable to scan the table. Error JSON:", JSON.stringify(err, null, 2)); 
    } else { 
     // print all the movies 
     console.log("Scan succeeded."); 
     data.Items.forEach(function (data) { 
      console.log(
       data.lineofbusiness + " name : ", 
       data.name); 
     }); 

     if (typeof data.LastEvaluatedKey != "undefined") { 
      console.log("Scanning for more..."); 
      scanningParameters.ExclusiveStartKey = data.LastEvaluatedKey; 
      docClient.scan(scanningParameters, onScan); 
     } 
    } 
} 

私は

{ 
    "message": "Invalid FilterExpression: Syntax error; token: \"contains\", near: \"#mgmtcontains NULL\"", 
    "code": "ValidationException", 
    "time": "2017-05-03T13:21:11.611Z", 
    "requestId": "0T0GU59HRJ24P96D42H9QNC97RVV4KQNSO5AEMVJF66Q9ASUAAJG", 
    "statusCode": 400, 
    "retryable": false, 
    "retryDelay": 13.73953651636839 
} 

として例外を取得し、私は私が間違った場所をつもりです知っていると私はこれをどのように修正することができますしてください。

+0

はい – notionquest

+0

属性管理の値がYESに – user3872094

+0

でもスキャンが十分に良いですが、私は残りの部分を取得することができNULLである – user3872094

答えて

0

"NULL"値(つまり、データとしてNULLを持つ文字列属性)のスキャン項目です。

私は、管理属性が文字列値 "NULL"を含む文字列データ型であると仮定します。

コード: - 私はあなたが管理上のNULLとしての価値を持っていると仮定し

var AWS = require("aws-sdk"); 
var creds = new AWS.Credentials('akid', 'secret', 'session'); 

AWS.config.update({ 
    region: "us-west-2", 
    endpoint: "http://localhost:8000", 
    credentials : creds 
}); 

var docClient = new AWS.DynamoDB.DocumentClient(); 

var params = { 
    TableName: "lob", 
    FilterExpression: "#mgmt = :mgmtVal", 
    ExpressionAttributeNames: { 
     "#mgmt": "Management", 
    }, 
    ExpressionAttributeValues : { 
     ":mgmtVal" : "NULL" 
    } 
}; 

docClient.scan(params, onScan); 
var count = 0; 

function onScan(err, data) { 
    if (err) { 
     console.error("Unable to scan the table. Error JSON:", JSON.stringify(err, null, 2)); 
    } else { 
     console.log("Scan succeeded."); 
     data.Items.forEach(function(itemData) { 
      console.log("Item :", ++count,JSON.stringify(itemData)); 
     }); 

     if (typeof data.LastEvaluatedKey != "undefined") { 
      params.ExclusiveStartKey = data.LastEvaluatedKey; 
      docClient.scan(params, onScan); 
     } 
    } 
} 
関連する問題