我收集了大约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