Как удалить несколько строк в динамической БД - PullRequest
0 голосов
/ 02 ноября 2019

Я удаляю данные из таблицы

Если я удаляю данные с помощью ключа разделения DynamodB, это работает.

Но я удаляю несколько строк, используя любые другие поля. это не работает.

var paramsa = {
      TableName:"test",
      Key:{
          dmac: dmac,
      },
       ConditionExpression: "dmac= :dmac"
  };

    docClient.delete(paramsa, (error) => {
        if (error) {
            console.log("Delete data fail");
        }
        console.log("Delete data Success");
    });

Ответы [ 2 ]

1 голос
/ 03 ноября 2019

Элементы (или строки) в DynamoDB уникально идентифицируются по их первичному ключу. Таблица может иметь один первичный ключ (ключ раздел ) или составной первичный ключ (ключ раздел плюс ключ sort ).

Чтобы удалить элемент, вы должны предоставить полный первичный ключ (будь то отдельный ключ раздела или составной ключ раздела плюс ключ сортировки).

Итак, если вы хотите удалить элементы, которые удовлетворяют определенному условию,например, автомобили с максимальной скоростью <120, затем выполните запрос или сканирование для идентификации этих элементов, извлеките первичные ключи и затем удалите элементы во второй операции. </p>

Чтобы удалить один элемент, используйте DeleteItem . Чтобы удалить несколько элементов, используйте BatchWriteItem . Несмотря на присвоение имени BatchWriteItem, его можно использовать для размещения нескольких элементов или для удаления нескольких элементов, и вы можете настроить таргетинг на одну или несколько таблиц DynamoDB в одном вызове API.

1 голос
/ 03 ноября 2019

в DynamoDB вы можете удалить элемент только по его ключу (то есть: ключу раздела и ключу сортировки, если он определен в таблице). Это, например, подчеркивается тем фактом, что атрибут Key является обязательным атрибутом в канонической спецификации операции delete. См .: https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteItem.html#DDB-DeleteItem-request-Key

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

Стандартное решение для "поиска элемента по атрибутам, которые не являются ключом элемента", состоит в том, чтобы определить глобальный вторичный индекс (GSI) в таблице с этими атрибутами, которые определены как ключ GSI.

...