使用Robt 查询毫秒级,在node里面使用mongoose却有10s

发布于 2022-09-12 00:51:48 字数 1330 浏览 14 评论 0

什么原因呢?

在Robo 3T里面使用的查询语句:0.043s就返回了

db.getCollection('reports').find({pass:true})

image.png

而在node里面通过Mongoose去查询却需要10-12s,语句:

model(collection_name).find({pass:true})
image.png

求大佬拯救一下,好让我拯救世界~~~

另外,索引是这样设置吧~

image.png

好吧,默认robo 是limit=50,于是加了这么多,也才0.083s

db.getCollection('reports').find({pass:true}).limit(100000)

然后在mongoose里面limit=50,也差不多0.048s

limitmongooserobo 3t
5050ms81ms
10054ms83ms
1000231ms85ms
100009941ms84ms

所以结论是,不管robo怎么查询,都特么是以limit=50??

我进入shell里面去查询,看起来没什么问题吧?90ms,指的是 explain的时间吗?

"nReturned" : 10969,
"executionTimeMillis" : 96,
"totalKeysExamined" : 10969,
"totalDocsExamined" : 10969,

语句

db.reports.find({pass:true}).limit(10000).hint({pass:1}).explain('executionStats')

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

无远思近则忧 2022-09-19 00:51:48

试试加lean

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文