N V*_*N V 2 mongoose mongodb node.js
我的Mongoose查询速度非常慢.我把它缩小到Mongoose创建对象的方式或db服务器请求中的实际延迟.我几乎没有数据库中的任何数据(4个集合中的每个集合中有1000个对象)并且手动运行查询(类似于产品中的查询)并对它们进行分析,它们都运行<2-4 ms.
通过在线搜索/查看文档我无法弄清楚的两个大问题:
这是我看到的一些延迟时间:
Login
localhost + localDB = 58ms
localhost + mongoHQ = 127ms
heroku + mongoHQ = 287ms
Get Data
localhost + localDB = 281ms
localhost + mongoHQ = 1657ms
heroku + mongoHQ = 2190ms
Run Code Online (Sandbox Code Playgroud)
更新1
我想出了如何记录查询并检查了一堆查询.我认为它会进入一个带有一堆填充调用的查询 - 我注意到在生成查询的填充部分时,Mongoose输出一个Mongo查询,如:
users.find({ _id: { '$in': [ ObjectId("531ec0e17c0b16a82be4f506"),
ObjectId("531ec0e17c0b16a82be4f506"), ObjectId("531ec0e17c0b16a82be4f506") ...
Run Code Online (Sandbox Code Playgroud)
其中id重复多次(在这种情况下是几百次) - 我认为这是导致减速和测试代码的原因,我发现每个填充调用在请求时间增加了大约.3s-.5s.填充调用也在数组字段上运行 - 这也保持在100秒内查询的数量 - 低1000(重复).
有没有办法在进行填充调用时删除重复的条目?