текстовый индекс, необходимый для запроса $text в MongoDB с помощью Express

#mongodb #express #axios

#mongodb #экспресс #axios

Вопрос:

Я создал серверную часть Express, которая подключена к локальному MongoDB

когда я создаю сообщение, чтобы узнать конкретный термин, оно возвращает ошибку, подобную этой

 MongoError: text index required for $text query
 

Как я могу исправить эту ошибку?

это мой Экспресс-код

 app.post("/api/search",(req,res)=> {

    const term = req.body.searchTerm;

    console.log(term); // Here I can check the request coming well

    MongoClient.connect(url,(err,db)=> {
        if(err) throw err;

        const dbo = db.db("Exercise");
        dbo.collection("exercise")
            .find({$text:{$search:term}})
            .toArray((error, result) => {
                if (error) {
                  console.log(error);
                  return;
                } else {
                    console.log("Success");
                  res.send(result);
                }
              });
    });
});

Thank you in advance!
 

Ответ №1:

Что вы можете сделать, чтобы решить вашу проблему, просто. Вы можете создать «текст» в поле, которое хотите найти в своей коллекции, следующим образом:

 db.reviews.createIndex( { comments: "text" } ) 
 

Примечание: предполагается, что «комментарии» — это поле, указанное в документах

Однако для достижения наилучших результатов вы можете создать динамический индекс поиска по умолчанию в MongoDB Atlas. Это бесплатно и просто. Поскольку это динамическое значение по умолчанию, вам не нужно выполнять какие-либо настройки. Результаты и производительность, вероятно, будут лучше, если вы включите поиск.

Я надеюсь, что эта информация поможет.