1) > чтобы хранить весь массив данных в виде json
JSON уже давно можно хранить в самом MySQL, если вам нужно произвольное число параметров, но значения их скалярные. Для индексации -
виртуальные колонки и индексы по ним.
Если хочется найти искать «1» в массиве [1, 2,5], то вам в PostgreSQL.
2) «Полнотекстовый поиск» — что вы от него хотите? Если вам нужно точное совпадение, только быстрее, то берите что угодно.
Если вам нужен учёт словоформ, то он есть как минимум в Монге, Эластик, Постгрес, Сфинкс/Мантикора.
Если вы хотите больше контроля (поиск с учётом особенностей > 1 языка, тюнинг морфологии, какое-то ранжирование), то выкидываем Монгу (нет тюнинга морфологии и ранжирования, а на каждый язык нужно вешать отдельный индекс).
Если вы и ранжирование хотите тюнить (вплоть до простенького машинного обучения) и вообще максимальную скорость поиска, то вас спасёт только Мантикора/Сфинкс, всё остальные грустно глотают пыль.
Но золотая середина - Постгрес. На него довольно легко перекатиться и он избавляет от необходимости разводить NoSQL зоопарк.
P.S. И забудьте про монгу, Постгрес лучше неё почти по всем параметрам.