#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. Это бесплатно и просто. Поскольку это динамическое значение по умолчанию, вам не нужно выполнять какие-либо настройки. Результаты и производительность, вероятно, будут лучше, если вы включите поиск.
Я надеюсь, что эта информация поможет.