cqlsh: вставка значения в UDT

Я создал UDT -

CREATE TYPE home.my_object (
   id text,
   type text,
   quantity int,
   critical boolean,
   count int,
   stock text,
   envelope boolean
  );

 ALTER TABLE home.product ADD my_objects list<frozen<my_object>>;

Я написал скрипт и попытался выполнить вставку/обновление базы данных, но получил сообщение об ошибке.

Вот мой скрипт-

       Update home.product set my_objects[''] = {
         id: '3.MYFIT-LTR-DYN',
         type: 'COMPONENT',
         quantity: null,
         critical: '',
         count: null,
         stock:'',
         envelope:''
     }  where id = 'FIT-GI';

Когда я выполняю этот оператор, я получаю сообщение об ошибке ниже:

      code=2200 [Invalid query] message="Invalid STRING constant () for "idx(my_objects)" of type int"

person saurav    schedule 19.05.2016    source источник


Ответы (1)


Тип данных для критического и конверта является логическим, поэтому вы должны использовать значение как True/False.

Если вы хотите обновить определенный индекс в списке, ваш запрос будет таким:

 Update home.product set my_objects[0] = {
         id: '3.MYFIT-LTR-DYN',
         type: 'COMPONENT',
         quantity: null,
         critical: true,
         count: null,
         stock:'',
         envelope:true
     }  where id = 'FIT-GI';

Примечание. Замените 0 на нужный индекс.

Если вы хотите добавить значения в существующий список, ваш запрос будет таким:

 Update home.product set my_objects = my_objects + [{
         id: '3.MYFIT-LTR-DYN',
         type: 'COMPONENT',
         quantity: null,
         critical: true,
         count: null,
         stock:'',
         envelope:true
     }]  where id = 'FIT-GI';

Если вы хотите полностью заменить значение my_objects, тогда:

 Update home.product set my_objects = [{
         id: '3.MYFIT-LTR-DYN',
         type: 'COMPONENT',
         quantity: null,
         critical: true,
         count: null,
         stock:'',
         envelope:true
     }]  where id = 'FIT-GI';
person undefined_variable    schedule 19.05.2016