ScanFilter в DynamoDB, используя МЕЖДУ оператором сравнения - PullRequest
0 голосов
/ 16 октября 2018

Я пытаюсь использовать ScanFilter для фильтрации даты с помощью DynamoDB.Я попытался посмотреть в документах, но не могу найти, как структурировать формат JSON.В настоящее время у меня есть:

 "params": {
    "TableName": "steprstatus2",
    "ScanFilter": {
      "lastModified": {
        "ComparisonOperator": "BETWEEN",
        "AttributeValueList": [
          "Wed, 10 Oct 2018 21:09:23 GMT", "Fri, 12 Oct 2018 21:09:23 GMT"
        ]
      }
    }
  }

Я не уверен, что должно идти в AttributeValueList, или если мне нужно изменить свою дату, чтобы она была определенным форматом в самом DynamoDB.

Спасибо

Ответы [ 3 ]

0 голосов
/ 16 октября 2018

Используйте BETWEEN в FilterExpression с scan запросом.

const AWS = require('aws-sdk');
const documentClient = new AWS.DynamoDB.DocumentClient();


let queryParams = {
  TableName: 'tableName',
  FilterExpression: '#lastModified BETWEEN :startTime AND :endTime',
  ExpressionAttributeValues: {
    ':startTime': '2018-06-26T18:10:00.000Z',
    ':endTime': '2018-06-27T18:10:00.000Z'
  },
  ExpressionAttributeNames: { '#lastModified': 'lastModified' },
  ScanIndexForward: false
};

documentClient.scan(queryParams, function (err, data) {
  if (err) {
    console.log('failure:scan data from Dynamo error', err);
    console.log(err);
  } else {
    console.log('success:scan data from Dynamo data');
    console.log(data);
  }
});
0 голосов
/ 16 октября 2018

Похоже, мне нужно было вместо этого использовать оператор сравнения BETWEEN и указывать значения через запятую в моем массиве того же типа данных:

 "ScanFilter": {
      "lastModified": {
        "ComparisonOperator": "BETWEEN",
        "AttributeValueList": [
            "Wed, 10 Oct 2018 00:02:59 GMT",
            "Wed, 10 Oct 2018 23:46:34 GMT"
        ]
      }
    }
0 голосов
/ 16 октября 2018

Согласно документам ScanFilter AWS , AttributeValueList указывается в виде массива типа -> карты значений.

В вашем случае массив будет выглядеть примерно так:

"AttributeValueList": [
  {"S": "Wed, 10 Oct 2018 21:09:23 GMT"},
  {"S": "Fri, 12 Oct 2018 21:09:23 GMT"}
]

Обратите внимание, что тип Date сохраняется как тип S (String) DynamoDB .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...