如何解决在MongoDB中实现聚合时要小心的一般指针
当我实施一次聚合(尤其是一次具有多个聚合级别的聚合或带有存储分区的聚合)时,我注意到MongoDB上明显的性能降低,
但是,在维护或提高MongoDB聚合查询的性能方面我应该遵循/确保某些事情吗?
解决方法
您可以先使用cursor.explain()查看各种统计信息。
它将帮助您了解mongodb做了什么以获取输出。
要了解.title {
font-size: 1.95em;
&.home {
color: black;
}
}
的输出,请通读这些文档。
一旦您了解了查询的幕后工作方式,首先要做的就是索引。
查看您的收藏夹中是否有索引。
如果是,您的查询是否使用索引获取输出。 (您可以通过cursor.explain()
命令找到它)
根据文档Query Optimisation,需要注意的一些事情是:
- 创建索引以支持读取操作
使用db.collection.explain("executionStats")方法来提供有关查询性能的统计信息。这些统计信息可用于衡量查询是否以及如何使用索引。
引用:Pipeline operators and indexes
- 早期过滤:通过过滤集合中的文档使查询更具选择性
在可能的情况下,将$ match运算符放在管道的开头。
- 评估当前运营的绩效
有关更多信息,请参见Explain Results和Analyze Query Performance。
- 使用投影仅返回必要的数据
当您只需要文档中的一部分字段时,只需返回所需的字段即可获得更好的性能
其他提示:
- 对大型数组使用
localhost:8080/static/static/index.html
会导致整个集合占用大量内存并减慢运行速度。MongoDB2.6及更高版本可以使用的另一种替代方法是$unwind
您$filter
它 - 日期字符串比较繁琐,因此最好将日期存储为MongoDB日期对象,并使用日期类型本身而不是日期字符串类型进行所有比较。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。