DynamoDB условная запись только при наличии N или менее элементов на карте

#amazon-dynamodb #dynamodb-queries

Вопрос:

Мы храним карту в DynamoDB (не мой выбор дизайна). Таким образом, в основном ключ может содержать список значений. Что-то вроде map[строка][]Что-то разрушенное.

Мы можем добавить значение к данному ключу только в том случае, если для данного ключа существует только N или менее значений. Например, если «key1» уже имеет 3 значения, я не могу добавить другое значение, но если оно имеет менее 3 значений, я могу добавить еще одно значение.

Я посмотрел на Условные записи, но не смог найти условное выражение, которое помогло бы в этом. Мы будем очень признательны за любую помощь. Спасибо!

Ответ №1:

Вам нужно будет сохранить количество записей в списке рядом со списком, возможно, что-то подобное сработает:

   {
    "key1": {
      "list": [1,2,3,4],
      "listLength": 4
    }
  }
 

Вам нужно будет убедиться, что список и длина списка синхронизированы.

В качестве альтернативы вы можете получить товар, проверить его длину, а затем обновить с условием, чтобы убедиться, что он не обновлялся между получением и операцией обновления.