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

MongoDB聚合:如何为trackingID字段左侧补零和字母、右侧补字母?

MongoDB聚合实现trackingID格式化(前缀+补零+后缀)

需要将文档中数字类型的trackingID字段格式化为前缀+补零后的数字+后缀的字符串形式,比如将963转为TR0000000963XP。

解决方案

通过MongoDB聚合管道的操作符组合实现,核心逻辑是转字符串→补零→拼接前缀后缀:

  1. $toString:将数字类型的trackingID转换为字符串,为后续补零操作做准备
  2. $lpad:对转换后的字符串左侧补零,固定数字部分的总长度
  3. $concat:将前缀、补零后的数字字符串、后缀拼接成最终格式

完整聚合代码

db.collection.aggregate([
  {
    $set: {
      trackingID: {
        $concat: [
          "TR",
          { $lpad: [{ $toString: "$trackingID" }, 10, "0"] },
          "XP"
        ]
      }
    }
  }
])

代码说明

  • $set阶段直接更新trackingID字段的值
  • $lpad的第二个参数10代表补零后数字部分的总长度,可根据实际需求调整;第三个参数"0"指定用零填充
  • 前缀"TR"和后缀"XP"可替换为业务需要的标识

原始数据

[
  {
    "_id": "63f7aad063710fe0106dbc04",
    "name": "Kristen Welch",
    "address": "267 Dooley Street, Westphalia, New York, 1648",
    "trackingID": 963,
    "greeting": "Hello, Kristen Welch! You have 9 unread messages.",
    "favoriteFruit": "apple"
  },
  {
    "_id": "63f7aad0c156afad133a66b6",
    "name": "Shaw Roach",
    "address": "254 Newkirk Placez, Hiseville, American Samoa, 7644",
    "trackingID": 729,
    "greeting": "Hello, Shaw Roach! You have 7 unread messages.",
    "favoriteFruit": "banana"
  }
]

处理后结果

[
  {
    "_id": "63f7aad063710fe0106dbc04",
    "name": "Kristen Welch",
    "address": "267 Dooley Street, Westphalia, New York, 1648",
    "trackingID": "TR0000000963XP",
    "greeting": "Hello, Kristen Welch! You have 9 unread messages.",
    "favoriteFruit": "apple"
  },
  {
    "_id": "63f7aad0c156afad133a66b6",
    "name": "Shaw Roach",
    "address": "254 Newkirk Placez, Hiseville, American Samoa, 7644",
    "trackingID": "TR0000000729XP",
    "greeting": "Hello, Shaw Roach! You have 7 unread messages.",
    "favoriteFruit": "banana"
  }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 22:57:21