MongoDB聚合:如何将时间字符串转换为ISO格式
MongoDB聚合实现time字段格式转换
可以通过MongoDB聚合管道结合字符串处理操作符完成格式转换,以下是具体实现:
db.yourCollectionName.aggregate([ { $addFields: { time: { $concat: [ "PT", { $arrayElemAt: [{ $split: ["$time", " "] }, 0] }, "S" ] } } } ])
代码说明:
$split: 将time字段按空格分割为数组,例如"3266 sec"会被拆分为["3266", "sec"]$arrayElemAt: 提取数组的第一个元素,即数字部分"3266"$concat: 将固定前缀"PT"、提取出的数字、固定后缀"S"拼接成目标格式"PT3266S"$addFields: 用转换后的新值覆盖原time字段,同时保留文档其他原有字段
如果需要永久修改集合中的文档,可在聚合后添加$out阶段将结果写入原集合(执行前请务必备份数据):
db.yourCollectionName.aggregate([ { $addFields: { time: { $concat: [ "PT", { $arrayElemAt: [{ $split: ["$time", " "] }, 0] }, "S" ] } } }, { $out: "yourCollectionName" } ])
注意:
$out会直接替换原集合的所有数据,操作前请确认数据已备份。
内容的提问来源于stack exchange,提问作者Tribe56123
相关产品推荐
相关产品推荐

