我收集了大約250萬條記錄。目前我正在使用帶有貓鼬的nodejs。我接受任何可以提高當前搜索效率的建議。加快搜索速度
藝術家收集模式是類似的東西:
var Artist = new mongoose.Schema({
realname: String,
names: Array
});
用戶通過字符串例如:邁克爾·傑克遜被警方或邁克爾傑克遜Jillie豆接觸。現在我必須找到藝術家/歌手/人,所以唯一合乎邏輯的事情是我可以找到:迭代集合中的所有文檔,檢查是否有任何名字在給定字符串中,如果是,我們有匹配 - >停止循環。
但是這是非常低效的內存,因爲它必須將整個集合加載到內存中,因此nodejs可以遍歷並檢查所有記錄。
看起來,檢索整個收藏需要大部分時間。任何方式來加速這一點?在mongoshell中db.collection.find()非常快。但是在nodejs中使用貓鼬需要花太多時間。
- 爲什麼.find()如此慢用於貓鼬?
- 是否有任何其他數據庫設計用於此目的?
- 你會如何更有效地解決這個問題?
- 可以映射減少在這裏的任何用途?
關於您爲什麼'find'對Mongoose速度太慢的具體問題,請調用['lean()'](http://mongoosejs.com/docs/api.html#query_Query-lean)你的'查詢',因爲你只需要數據而不是完整的模型對象。如果你這樣做,它應該和殼一樣快。 – JohnnyHK 2013-05-04 02:40:56