map()(映射转换)
最后更新:2026-10-09
map()(映射转换)
map()对游标中的每条文档应用转换函数并返回结果数组,例如`db.users.find().map(function(u) { return u.name })`。它相当于forEach()加结果收集,常用于提取字段、格式化数据。注意:map()会消费整个游标,返回的是数组而不是新游标。
| 分类 | 游标 |
|---|---|
| MongoDB 版本 | 1.0+ |
| 示例语言 | mongosh (Shell) |
📝 语法
db.<集合>.find(<条件>).map(<转换函数>)
⚙️ 参数
| 转换函数 | 接收文档并返回新值的函数,如function(u) { return u.name }。 |
|---|
返回值:转换结果组成的数组。
▶ 示例
请在本地安装的 mongosh 中执行以下命令(需已启动 mongod):
// map:提取所有用户的姓名列表
const names = db.users.find({ age: { $gte: 18 } }).map(u => u.name)
names
运行结果:
[ 'Alice', 'Bob', 'Cara' ]
📌 注意事项
- map()消费整个游标并返回数组
- 转换函数返回新值,不会修改数据库文档
- 需要继续链式游标操作时先用map处理完再转换
🏷️ 相关标签
💡 相关案例
📚 相关教程
❓ 常见问题
Qmap和forEach有什么区别?
Amap()返回转换后的数组,适合提取字段;forEach()只执行回调不返回结果。
Qmap的结果是数组吗?
A是的,map()返回数组,等价于先forEach收集再返回。
Qmap会修改数据库里的文档吗?
A不会,转换只作用于客户端内存中的文档副本。