You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何更新MongoDB集合数组内每个文档的length值并保留两位小数

MongoDB集合中数组元素字段四舍五入更新方案

针对你提供的文档结构,要将items数组中每个元素的length字段四舍五入到两位小数并完成更新,可根据MongoDB版本选择以下方案:

方式一:聚合管道更新(MongoDB 4.2+ 推荐)

这种方式直接在更新操作中通过聚合表达式处理数组元素,效率更高:

db.yourCollection.updateMany(
  {}, // 空条件匹配所有文档,如需指定更新范围可添加查询条件(如{ id: 1223 })
  [
    {
      $set: {
        items: {
          $map: {
            input: "$items",
            as: "item",
            in: {
              length: { $round: ["$$item.length", 2] }
            }
          }
        }
      }
    }
  ]
)

代码说明:

  • updateMany:批量更新匹配的文档,单文档更新用updateOne
  • $map:遍历items数组的每一个元素
  • $round:将目标字段值四舍五入到指定的小数位数(这里是2位)
  • $set:把处理后的新数组重新赋值给items字段

方式二:循环遍历更新(低版本MongoDB)

若MongoDB版本低于4.2,不支持聚合管道更新,可通过客户端遍历处理:

db.yourCollection.find().forEach(doc => {
  const updatedItems = doc.items.map(item => ({
    length: Math.round(item.length * 100) / 100
  }));
  db.yourCollection.updateOne(
    { _id: doc._id },
    { $set: { items: updatedItems } }
  );
});

注意事项:

  • 替换yourCollection为你的实际集合名称
  • 两种方式的四舍五入逻辑效果一致,可根据环境选择

内容的提问来源于stack exchange,提问作者Mike M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 18:12:46