Выберите из базы данных MySQL JSON объектов - PullRequest
0 голосов
/ 05 августа 2010

Мне нужно сохранить строку json в базе данных и выбрать записи в зависимости от значений объекта json. Есть ли способ сделать этот выбор с помощью MySQL? (я использую PHP, MySQL 5.1)

Ответы [ 5 ]

1 голос
/ 05 августа 2010

Почему вы не используете базу данных документов вместо MySQL?Они были созданы только для этой цели.Посмотрите на MongoDB .

Если MongoDB не является опцией, вы также можете сбросить соответствующее подмножество данных в индексе Lucene (см. Zend_Search_Lucene ) и выполнить поиск по индексу Lucene для получения идентификаторов записей объектовкоторые соответствуют вашим критериям поиска (и впоследствии извлекают их из MySQL).

0 голосов
/ 01 апреля 2016

Тип данных JSON и вспомогательные функции были добавлены в MySQL с версии 5.7.8. Подробности здесь:

https://dev.mysql.com/doc/refman/5.7/en/json.html

0 голосов
/ 05 августа 2010

MySQL не имеет собственного типа JSON, поэтому он не знает, как выполнить запрос к значению JSON. Если вам действительно нужно это сделать, вам нужно либо нормализовать / сериализовать данные JSON в стандартные типы данных MySQL (например, разделить значение по нескольким столбцам и строкам), либо использовать базу данных, которая действительно может понимать JSON. (например, CouchDB или MongoDB).

0 голосов
/ 05 августа 2010

С php 5.2 вы можете использовать библиотеку php JSON.Вы можете использовать регулярные выражения в php или в MySQL (http://dev.mysql.com/doc/refman/5.1/en/regexp.html) для элегантного извлечения значений.

0 голосов
/ 05 августа 2010

Объект JSON - это в основном список пар ключ / значение.Если вы заранее знаете, какими будут эти ключи, вы можете создать таблицу с именами этих ключей в виде столбцов.Вы разделяете свой JSON и вставляете каждое значение в соответствующий ему столбец.

Если вы заранее не знаете, какими будут ключи в JSON, вы можете создать таблицу со столбцами идентификатора объекта, ключа и значения,Каждая пара ключ / значение хранится в отдельной строке.Хотя может быть сложнее написать запросы для этого, но это зависит от того, что вы хотите запросить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...