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

如何编写MongoDB更新查询将数组内字段转为小写

正确的MongoDB更新查询语句

要将集合中所有文档的cities.name转为小写,需要使用聚合管道式更新(MongoDB 4.2及以上版本支持),通过$map遍历数组并转换每个元素的name字段:

db.states.updateMany(
  {},
  [
    {
      $set: {
        cities: {
          $map: {
            input: "$cities",
            as: "city",
            in: {
              cityid: "$$city.cityid",
              name: { $toLower: "$$city.name" }
            }
          }
        }
      }
    }
  ]
)

原有写法报错原因

你之前的写法错误在于:在$set的字段值中直接使用{ $toLower: "cities.$[].name" }是不合法的——"cities.$[].name"被当作字符串字面量处理,而非字段引用,同时这种方式无法正确遍历数组并引用每个元素的原有值。

聚合管道式更新允许你使用聚合表达式(如$map、$toLower)基于原有字段值生成新值,通过$引用根文档字段,$$引用管道变量(比如$map中as定义的变量)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 22:01:12