dev.to | 📄 原文链接 | 2026-10-12 收录

MongoDB 8.3 的 arrayIndexAs 把「带下标 map」变通做法的开销砍掉最多 31%

来源:dev.to — 2026-10-11

📋 概述

MongoDB 的 $map、$filter 与 $reduce 从来不给当前元素的位置。如果你需要知道现在处理的是下标 0 还是 4999,只能自己造——通常是对 $range(0, $size(arr)) 做映射,再用 $arrayElemAt 把每个值取回来。8.3 新增的 arrayIndexAs 字段直接把下标交给 $map,不再需要额外阶段。发布说明把它描述为一处便利性改动,作者想弄清旧写法到底让人付出了多少代价,于是用同一份数据跑两种模式做对比:两者输出逐文档完全一致,在 32 万元素规模下服务端耗时约 134 毫秒对 102 毫秒,差距最高约 31%;但当十个客户端抢同一批 CPU 核心时,这个差距会缩到约 5%。

🔑 核心要点

💡 金句

我先逐文档核对了两种写法输出完全一致,才敢相信任何一个计时数字。
← 返回 dev.to 首页