mongodb - MongoDB 查找性能
问题描述
我想知道这段代码之间是否有区别:
return await _post
.aggregate([
{
$match: filters
},
{
$addFields: {
totalLikes: { "$size": "$likes" },
totalComments: { "$size": "$comments" },
}
},
{
$sort: sort
},
{
$skip: skips
},
{
$limit: pageSize
},
{
$lookup: {
from: _comment.collection.name,
localField: 'comments',
foreignField: '_id',
as: 'comments',
},
},
])
};
和这个
return await _post
.aggregate([
{
$lookup: {
from: _comment.collection.name,
localField: 'comments',
foreignField: '_id',
as: 'comments',
},
},
{
$addFields: {
totalLikes: { "$size": "$likes" },
totalComments: { "$size": "$comments" },
}
},
{
$match: filters
},
{
$sort: sort
},
{
$skip: skips
},
{
$limit: pageSize
},
])
};
我的问题基本上是,查找总是在所有文档上完成,或者如果我先应用过滤器,它只应用于过滤后的文件?还有另一种提高性能的方法吗?谢谢!
解决方案
推荐阅读
- amazon-web-services - 使用 aws cli 命令 aws acm list-certificates 时,有没有办法让它返回没有域名的证书?
- .net - Blazor 生命周期中的 SetParametersAsync 和 OnParametersSet 方法有什么区别?
- javascript - 测试输入的输入是否为数字 (JavaScript)
- wpf - 带有主题的 Wpf 视图在设计视图中与在运行时看起来不同
- javascript - JavaScript 中有多少种数据类型,它们是什么,什么是类型?
- jquery - Shopify Search.Terms - 仅限于标题
- javascript - 操作完成后如何提醒消息?
- android - 如何在 React Native (android) 中同步 gradle?
- python - 阅读 Tensorflow 数据集会改变 `take()` 和 `skip()` 的行为
- laravel - 大数据的 Laravel 验证超时