我收集了大约 250 万条记录。目前我正在使用带有猫鼬的nodejs。我愿意接受任何可以提高当前搜索效率的建议。
艺术家收藏模式是这样的:
var Artist = new mongoose.Schema({
realname: String,
names: Array
});
用户传递字符串,例如:Michael Jackson 被警察或Michael Jackson-Jillie bean联系。现在我必须找到艺术家/歌手/人,所以我能找到的唯一合乎逻辑的事情是:遍历集合中的所有文档,检查是否有任何名称在给定字符串中,如果是,我们有匹配 -> 停止循环。
但这是非常低效的内存,因为它必须将整个集合加载到内存中,以便 nodejs 可以遍历并检查所有记录。
似乎检索整个集合需要大部分时间。有什么办法可以加快这个速度吗?在 mongoshell db.collection.find() 中非常快。但是在 nodejs 中使用猫鼬需要很长时间。
- 为什么 .find() 与 mongoose 一起使用这么慢?
- 是否有为此目的设计的其他数据库?
- 你将如何更有效地解决这个问题?
- map reduce 可以在这里使用吗?