DynamoDBでレコードがない時は作成、あるときは値をインクリメントする方法

URLに対してのアクセス数を知るためにHASHキーがurlのテーブルを作成しました。項目にはnumを入れるというルールにしています。

URLをキーにアクセス数をカウントしたいので、レコードがあったら更新なかったら新規作成を行いたいのでupdateメソッドを使います。その際、レコードがない場合はnumの値が存在しない扱いになるのでif_not_existsを使い初期値を設定してレコードが作成されるようにUpdateExpressionで設定しています(レコード作成時が1になるように:defaultの値を0にしました)

'use strict';

const AWS = require('aws-sdk')
AWS.config.update({
  region: 'ap-northeast-1',
  endpoint: 'http://localhost:8000'
})
const docClient = new AWS.DynamoDB.DocumentClient()

const params = {
  TableName: 'access',
  Key: {
    url: '/contents/123'
  },
  UpdateExpression: "set num = if_not_exists(num, :default) + :increment",
  ExpressionAttributeValues:{
    ":default": 0,
    ":increment": 1
  },
  ReturnValues: "UPDATED_NEW"
}
docClient.update(params, (err, data) => {
  if (err) {
    console.log(err)
  } else {
    console.log(data)
  }
})