javascript - Mongo DB 聚合 $lookup 向所有文档缓慢添加索引?
问题描述
我的 Mongo DB 数据库中有两个集合。一般来说,我对 Mongo DB 还是很陌生。我的每个集合都说现在有 1 个索引来自 Laravel 和 SQL 数据库,我可以通过->index()
在我的列的迁移中添加索引来提高性能,我认为有一种方法可以为我的 Mongo DB 文档做类似的事情和键/值字段。
我有两个收藏:
- data_source_one(文档数量:5,300,文档总大小:1.2 MB)
- data_source_two(文档数量:6,800,文档总大小:139.8 MB)
我正在使用$lookup(聚合)基于一个公共字段有效地对我的两个表进行连接,但与传统的 SQL 数据库不同,它需要25 秒以上才能完成请求。
我想知道如何通过将每个集合中的所有文档的索引添加到我的created_at
键(自定义)和其他字段来从本质上提高性能?
const client = new MongoClient(process.env.DB_CONNECTION)
await client.connect()
const results = await client.db().collection('data_source_one').aggregate([{
$lookup: {
from: 'data_source_two',
localField: 'created_at',
foreignField: 'created_at',
as: 'combined_results'
}
}]).toArray();
解决方案
推荐阅读
- css - 当我调整浏览器窗口的大小时,如何使我的表单不会分崩离析?
- spacy - 如何仅针对 NER 优化 SpaCy 管道(使用现有模型,无需训练)
- ios - UIAlertAction 不可重用
- node.js - Sequelize Insert 记录由 Model.Create 与深度关联
- javascript - 有什么方法可以在 docker 容器中使用 puppeteer 和带有 headless:false 的 chromium 运行 NextJS?
- flutter - 从另一个函数结束流
- java - 外部排序 - 使用 2 路合并方法合并 N 个文件
- r - 基于相关矩阵为R中的多个时间步生成随机数据
- steganography - 在termux中进行隐写后如何取回我的文件?
- javascript - Loopback4:无法启动应用程序。错误:连接超时