web-dev-qa-db-ja.com

dynamodbで複数の条件を持つFilterExpressionを使用する方法

Dynamodbでテーブルスキャンを実行しようとしています。以下は、JavaScriptのコードです。

var params = {
    TableName: 'Contacts',
    FilterExpression: 'begins_with(CustomerName,:value)OR begins_with(CustomerName,:val) ', 
    ExpressionAttributeValues: { 
        ':value': {'S':'S'},
        ':val':{'S':'E'},
      },
    Select: 'ALL_ATTRIBUTES', 
 };

 dynamodb.scan(params, function(err, data) {
    if (err) ppJson(err); // an error occurred
    else ppJson(data); // successful response
});

しかし、botot3を使用して同じことを試すことはできませんでした。

以下は私がこれまでに達成できたことです

response = table.scan(
                  Select= 'ALL_ATTRIBUTES',
                  FilterExpression=Attr('CustomerName').begins_with("S") 
                  )

OR条件を追加する方法を理解できませんでした。追加すると、エラーが表示されます

13
JithPS

ANDの場合「&」が使用され、OR '|'が使用される場合

  response = table.scan(
              Select= 'ALL_ATTRIBUTES',
              FilterExpression=Attr('CustomerName').begins_with("S") | Attr('CustomerName').begins_with("S") 
              )
14
JithPS

文字列compare = ["a = b"、 "c begin_with val ']を作成して、'および '.join(compare)で結合できます。

フィルター式 'a = bおよびc begin_with val'を作成します

0
Oirad