Чтобы выполнить текстовый поиск по всем полям, сначала необходимо создать текстовый индекс по всем полям.
как указано в документации mongodb : «Чтобы разрешить текстовый поиск во всех полях со строковым содержимым, используйте спецификатор подстановочных знаков ($ **) для индексации всех полей, содержащих строковое содержимое».
если вы работаете внутри оболочки mongo (которую вы выполняете из командной строки, вызывая 'mongo'), то вы можете сделать это с помощью этой команды, где 'collection' - это имя коллекции вБД, которую вы хотите использовать.
db.collection.createIndex({ "$**": "text" },{ name: "TextIndex" })
второй объект, т. е. {name:"TextIndex"}
, является необязательным ... вам на самом деле не нужно давать индексу имя, так какможет быть только один текстовый индекс для каждой коллекции (за раз ... вы можете удалить индексы и создать новые, если хотите).
как только вы создали текстовый индекс для всех полей, вы можете сделатьпростой текстовый поиск с использованием следующего объекта запроса: { $text : { $search: <your string> } }
поэтому, если вы пишете функцию javascript, вы можете сделать что-то вроде:
var cursor = db.collection(<collection_name>).find({ $text: { $search: <your string> } });
для получения дополнительной информации.информация о различных способах управления поиском, ссм. документацию mongodb по поиску текста здесь