Всем привет! Не могу понять как обновить данные в БД с типом JSON.
Имею данные
id | data
1 | [{"_id": "1", "name": "Misha", "age": "30"}, {"_id": "2", "name": "Olya", "age": "25"}]
2 | ...
Как обновить в строке 1, возраст на 35 у пользователя Olya ?
Если был бы не многомерный массив, вот так получилось бы сделать
Глеб Старков, Это да, но не удобно. В последних версиях MySQL введен тип JSON, который это позволяет правильно работать с json, но вот про многомерные массивы не могу найти информацию. Не может же быть, чтобы они не учли этого при введении типа JSON.
Всё не прощу, а по другому. В первоначально варианте у вас был массив и вы к нему неверно обращались (как к объекту), теперь у вас объект и ваше обращение стало верным. Вы пробовали так как я вам предлагал в комментариях?
Если сохранять массив, допустим в том же поле age, то json второй раз преобразовывается в строку и получается вот так {"_id": "1", "age": "{\"6\":\"666\"}"}
а надо так {"_id": "1", "age": {"6":"666"}}
Функций которые бы позволили обновить age со сравнением поля name я думаю нет, только если свою собственную писать.
Но вообще это выглядит как изначально кривая структура бд.