mongodb - 将结果中每个数组的长度相加
问题描述
所以我想像这样在猫鼬中获得不同的数组值
await Model.distinct('array');
我的目标是获取每个数组并将它们的长度相加,可以像这样使用 for 循环轻松完成
for(const val of array){
sum += array.length
};
但我真的不想使用 for 循环,那么有没有办法用 O(1) 实现这样的事情?
解决方案
您可以使用聚合查询来执行操作。
const sum = await Model.aggregate(
{
$group: {
_id: '$array'
}
},
{
$unwind: {
path: '$_id'
}
},
{
$project: {
total_length: { $sum: '$_id'}
}
}
)
虽然操作不会是 O(1),但会明显更快并且使用更少的内存。
推荐阅读
- spring - 计划任务是否应该在每次执行时启动 Spring 应用程序?
- ios - 如何查看应用内购买(自动续订)的购买状态?
- android - 使用 Kotlin 在 Android 中复制文件 Flutter 插件
- javascript - Jquery验证自定义CSS复选框
- mysql - 如何解决 django.db.utils.IntegrityError: (1364, "Field 'name' doesn't have a default value")
- python - 脚本无法生成结果
- sql-server - 完全“镜像”或复制 SQL Server
- javascript - 如何使某些代码仅在某些特定域上运行
- r - Chloropleth graph colours in the wrong countries
- python - BigQuery - 更新架构,在 Python 客户端的任意位置添加一个 NULL 列