Установить свойство объекта (строка) как индекс текста

Darío GL спросил: 13 июня 2018 в 07:54 в: mongodb

Я знаю из документов mongodb, что мы можем устанавливать строки или массивы строк как текстовые индексы для будущих поисков. Я хочу знать, возможно ли иметь в качестве индекса строку, которая является строковым свойством объекта. Например:

Person: {
 name: String
}

Можно ли назвать текстовый индекс?

1 ответ

Есть решение
Radosław Miernik ответил: 14 июня 2018 в 12:34

Да, вы определенно можете:

db.collection.createIndex({'Person.name': 'text'});

В Mongoose:

schema.index({'Person.name': 'text'});
Darío GL ответил: 14 июня 2018 в 02:42
Отлично. Оно работает. Дело в том, что у меня более сложная проблема. Схема overview: {type: {blocks: [{ key: String, data: {}, text: String}]}}, и я хочу искать по текстовому полю внутри "блоков". Дело в том, что у меня есть массив объектов, и я хочу искать в каждом поле "текст" каждого объекта массива.
Darío GL ответил: 14 июня 2018 в 02:47
Может быть, я должен конкатрировать каждую текстовую строку и поместить ее в другое поле, чтобы упростить поиск, но вы знаете, я не хочу повторять информацию
Radosław Miernik ответил: 14 июня 2018 в 02:49
Я тестировал его прямо сейчас: индексирование такого документа все еще работает. Что касается производительности - вам нужно сравнить ее. Это может действительно измениться в зависимости от вашей характеристики данных.
Darío GL ответил: 14 июня 2018 в 02:58
Как ваш запрос прошел проверку? Я пробовал с db.collection.createIndex({'overview.type.blocks.text': 'text'}) и не имел результатов
Radosław Miernik ответил: 14 июня 2018 в 03:07
Создание индекса ничего не вернет, а создаст индекс (ну, технически это будет, но дело не в этом). Вы должны использовать оператор $text: db.collection.find({$text: {$search: 'search this text'}}).

Дополнительное видео по вопросу: Установить свойство объекта (строка) как индекс текста

MongoDB and Mongoose | Creating a REST API with Node.js

Создание модели данных с помощью Mongo и Mongoose

Node.js MongoDB Tutorial using Mongoose