MongoDB聚合:如何为trackingID字段左侧补零和字母、右侧补字母?
MongoDB聚合实现trackingID格式化(前缀+补零+后缀)
需要将文档中数字类型的trackingID字段格式化为前缀+补零后的数字+后缀的字符串形式,比如将963转为TR0000000963XP。
解决方案
通过MongoDB聚合管道的操作符组合实现,核心逻辑是转字符串→补零→拼接前缀后缀:
$toString:将数字类型的trackingID转换为字符串,为后续补零操作做准备$lpad:对转换后的字符串左侧补零,固定数字部分的总长度$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
相关产品推荐
相关产品推荐

