先決條件一個表的字段:讓MongoDB中搜索文本
數據庫與收藏已經創建職位,它的架構如下:
module.exports = function(mongoose){
var Schema = mongoose.Schema;
var postSchema = new Schema({
postID: String,
title: String,
description: String
});
mongoose.model('post', postSchema, 'posts');
postSchema.index({title: 'text'});
};
節點的路由器通過API處理:
apiRouter.get('/api/searchPosts', function(req, res, next){
postModel.find(
{ $text : { $search : req.query.text } },
{ score : { $meta: "textScore" } }
)
.sort({ score : { $meta : 'textScore' } })
.exec(function(err, posts) {
if(posts){
res.json({
posts : posts
});
} else {
res.send('Post does not exist');
}
});
});
我在努力實現什麼:
我想在我的帖子表稱爲冠軍全文檢索的字段。
我的堆棧:
MongoDB的,的NodeJS(與貓鼬),角
我的方法:
如在先決條件提到的,我已經添加了行:
postSchema.index({title: 'text'});
此外,我已經在終端運行下面的命令一次收藏已創建:
db.posts.createIndex({"title":"text"})
問題:
當我訪問該從URL,它的工作原理開始,但幾個星期後,它停止工作(我得到「後不存在'不作任何改變!)。爲了讓它恢復正常工作,我必須刪除收集並重新創建一個,然後運行命令:
db.posts.createIndex({"title":"text"})
然後開始工作幾周,等等。
我做錯了什麼?我沒有看到這幾周發生的事情的趨勢。我一直在這個問題上堅持了幾個星期,所以如果有人可以幫助,它將不勝感激。
感謝, 傻眼
我會在那裏做什麼,而不是返回'Post不存在',我會從那個錯誤(我認爲是實際的錯誤)返回一些東西。也許你正在得到一個超時或類似的東西。任何mongo日誌檢查等? –
重要的建議與錯誤。我已經參與了不到一年的發展,所以請原諒這個noob錯誤。 '錯誤'是:錯誤是:MongoError:$文本查詢所需的文本索引 - 但我已經這樣做了。不知何故,mondoDB本身已經忘記了我已經運行了這個命令。我會看看日誌中是否有任何內容。 –
嘿@AndreiNeagu - 我在下面發佈了我的答案。感謝您的建議。如果未來的觀衆再次突破,我會保持這篇文章的更新。 –