如何在mongo中进行索引后findOneAndUpdate()的性能评估
Posted
技术标签:
【中文标题】如何在mongo中进行索引后findOneAndUpdate()的性能评估【英文标题】:How to do the performance evaluation of findOneAndUpdate() after indexing in mongo 【发布时间】:2020-01-24 04:24:14 【问题描述】:我可以看到 .explain("executionStats") 来评估 Mongo 中 find() 查询的性能。但是 .explain 不适用于 findOneAndUpdate()。有没有办法查看索引对 findOneAndUpdate() 查询有多大帮助
【问题讨论】:
Explain 返回本文档中描述的方法的查询计划:db.collection.explain()。 【参考方案1】:在解释(“执行统计”)中。您只需删除“executionStas”并运行您的 findOneAndUpdate 查询,如下所示
''' db.collection.explain().findOneAndUpdate(query) '''
它会正常工作...
【讨论】:
它对我不起作用。这就是我问这个问题的原因。它给出了一个错误 E QUERY [js] TypeError: db.mycollection.explain(...).findOneAndUpdate is not a function :但是“更新”同样的事情正在工作 我认为 1 次 2 功能不起作用,您必须尝试 stat() 方法。我认为它正在工作。【参考方案2】:很遗憾,您不能同时使用 .explain()
和 .findOneAndUpdate()
。 .explain()
可以与返回游标 id 的函数一起使用,例如 .find()
,但它不能与 .findOne()
、.findOneAndUpdate()
和类似函数一起使用,因为它们返回一个不是游标 id 的结果。
我的建议是看看 Rockset 的 Justin Liu 的这两篇博客文章。
Handling Slow Queries in MongoDB - Part 1 - Investigation
Handling Slow Queries in MongoDB - Part 2 - Solutions
【讨论】:
以上是关于如何在mongo中进行索引后findOneAndUpdate()的性能评估的主要内容,如果未能解决你的问题,请参考以下文章