如何通过MongoDB聚合将数组元素转换为结构化对象数组
MongoDB聚合优化:直接转换数组元素结构(无需$unwind)
不需要拆分数组再重组,用$map操作符就能直接完成转换,这是效率更高的方案:
聚合管道示例
db.collection.aggregate([ { $addFields: { participants: { $map: { input: "$participants", // 指定要处理的原数组字段 as: "item", // 给遍历到的元素起别名 in: { // 定义转换后的对象结构 name: null, identifier: "$$item", // 引用当前遍历的元素值 type: "individual" } } } } } ])
为什么这比unwind方案更好?
- 单阶段完成转换,省去了先
$unwind拆分数组、再$group合并的多步骤操作 - 避免拆分数组导致的文档数量膨胀,数据量越大,性能优势越明显
- 逻辑更直观,直接对数组做映射转换,可读性更强
内容的提问来源于stack exchange,提问作者user6627352
相关产品推荐
相关产品推荐

