Mongodb截取两个斜杠之间的数字,将其转换成时间如dcsjzn-20231023-ajn,转换成2023-10-23
时间: 2024-01-13 10:02:34 浏览: 165
若你想在 MongoDB 中将两个斜杠之间的数字截取出来,并将其转换为时间格式,你可以使用 MongoDB 的聚合管道中的 $regexFind 和 $dateToString 操作符。
首先,你可以使用 $regexFind 操作符找到第一个斜杠和第二个斜杠之间的数字,然后将其转换为日期格式。假设你的集合名为 collection,你可以使用以下代码来查找第一个斜杠和第二个斜杠之间的数字并将其转换为日期格式:
```
db.collection.aggregate([
{
$project: {
result: {
$regexFind: {
input: "$yourStringField",
regex: "\\/(\\d+)\\/"
}
},
date: {
$dateToString: {
format: "%Y-%m-%d",
date: {
$toDate: {
$concat: [
{ $substr: [ "$result.match", 0, 4 ] },
"-",
{ $substr: [ "$result.match", 4, 2 ] },
"-",
{ $substr: [ "$result.match", 6, 2 ] }
]
}
}
}
}
}
}
])
```
在上面的代码中,你需要将 $yourStringField 替换为包含你需要截取的字符串的字段名,"\\/(\\d+)\\/" 用于匹配第一个斜杠和第二个斜杠之间的数字,并将匹配结果保存在名为 result 的新字段中。接下来,使用 $toDate 将匹配结果转换为日期格式,再使用 $dateToString 将日期格式转换为你想要的格式。
在 $toDate 中,我们使用 $concat 将匹配结果中的年月日拼接成一个字符串,并将其作为参数传递给 $toDate。在 $dateToString 中,我们使用格式化字符串 "%Y-%m-%d" 将日期格式转换为 "YYYY-MM-DD" 的格式。
最后,我们将转换后的日期保存在名为 date 的新字段中。你可以将 "dcsjzn-" 和 "-ajn" 与 date 拼接起来,形成最终的结果:dcsjzn-2023-10-23-ajn。
阅读全文