我有一个包含大约400个文档的mongoDB集合。现在,我有一个REST方法,它只返回这个集合上的.find({})查询的结果(我使用的是mongoose btw)。当我尝试以每秒约40个请求对此方法进行基准测试时,我发现响应时间非常可怕(~10s),并且在我分析了应用程序之后,flamegraph如下所示

当查询拉取20-30个对象时,性能变得可以容忍,但如果超过100个,应用程序就会被反序列化结果卡住。正常吗?我能为此做点什么吗?
提前谢谢。
发布于 2019-01-08 01:45:45
在mongoose中使用'lean‘方法可能会对你有所帮助。
‘JavaScript’方法告诉mongoose不要将对象从数据库转换为mongoose模式对象,而是转换为普通的‘lean对象,这反过来会提高反序列化速度。
示例
Students.find({name: 'Josh'}).lean().exec((err, docs) => {
...
});另请参阅
http://www.tothenew.com/blog/high-performance-find-query-using-lean-in-mongoose-2/
https://stackoverflow.com/questions/50702040
复制相似问题