2017-02-14 8 views
2

Я использую DynamoDB, и мне нужно обновить определенный атрибут на нескольких записях. Написав мое требование на псевдоязыке, я хотел бы сделать обновление, в котором говорится: «Таблица обновлений человек set relationshipStatus = 'замужем', где personKey IN (key1, key2, key3, ...)" (предполагая, что personKey является КЛЮЧОМ в моей таблице DynamoDB).Как обновить сразу несколько элементов в таблице DynamoDB

Другими словами, я хочу сделать обновление с помощью предложения IN, или, я полагаю, можно было бы назвать его пакетным обновлением. Я нашел ссылку this, которая запрашивает явно, если существует такая операция, как пакетное обновление, и ответ есть, что нет. Однако он не упоминает IN-clauses. documentation показывает, что IN-предложения поддерживаются в условных выражениях (по 100 значений могут быть предоставлены одновременно). Тем не менее, я не уверен, что такое предложение IN подходит для моей ситуации, потому что мне все еще нужно предоставить обязательный атрибут KEY (который ожидает, что это будет одно значение, возможно, я ошибаюсь), и я опасаюсь, что он сделает полное сканирование таблицы для каждого обновления.

Так что мой вопрос: как мне получить обновление на нескольких записях DynamoDB в одно и то же время? На данный момент это почти похоже на то, что мне придется вызывать оператор обновления для каждого ключа один за другим, и это просто неправильно ...

ответ

7

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