$arrayToObject(键值对数组转对象)
最后更新:2026-10-09
$arrayToObject(键值对数组转对象)
$arrayToObject 把键值对数组转换回文档对象,是 $objectToArray 的逆操作。输入支持两种格式:元素为 { k, v } 对象的数组,或元素为 [ '字段名', 值 ] 两元数组。典型场景是动态字段名经 $objectToArray 处理后重新组装,或在 $group 后把统计结果整理成对象。k 必须是字符串,重复的 k 由后面的值覆盖前面的值。
| 分类 | 数组 |
|---|---|
| MongoDB 版本 | 1.0+ |
| 示例语言 | mongosh (Shell) |
📝 语法
{ $arrayToObject: <数组> }
⚙️ 参数
| 数组 | { k, v } 对象数组或 [ '字段名', 值 ] 二元组数组。 |
|---|
返回值:转换后的文档;数组为空或包含 null 元素时返回 null
▶ 示例
请在本地安装的 mongosh 中执行以下命令(需已启动 mongod):
// $arrayToObject:把 k/v 数组转回对象
db.users.aggregate([
{ $project: {
scoreObj: { $arrayToObject: '$scorePairs' }
} }
])
运行结果:
{ '_id': 1, 'scoreObj': { 'math': 90, 'eng': 85 } }
📌 注意事项
- k 必须是字符串;重复键由后面的值覆盖前面的值
- 空数组或含 null 元素的数组返回 null
- 两种输入格式 { k, v } 和 [ 'k', v ] 等价,可混用
🏷️ 相关标签
💡 相关案例
更多实战案例即将上线,敬请期待。
📚 相关教程
❓ 常见问题
Q输入格式有哪两种?
A{ k, v } 对象数组,或 [ '字段名', 值 ] 两元数组。
Qk 不是字符串会怎样?
A报错,k 必须是字符串。
Q重复键怎么处理?
A后面的值覆盖前面的值。