迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 数据库 > MongoDB >

在 MongoDB 中将字符串转换为日期

作者:迹忆客 最近更新:2023/04/20 浏览次数:

MongoDB 是一个越来越受欢迎的优秀平台。 在它提供的各种功能中,MongoDB 还允许您将数据从一种类型转换为另一种类型。

这似乎是一个复杂的功能,但执行起来非常简单。

如果您正在寻找一种将数据从字符串转换为日期的方法,那么您来对地方了。


创建字符串或日期数据类型

在深入研究转换的工作原理之前,有必要先解释一下字符串和日期是如何创建的。 理想情况下,用户最初选择他想要的数据类型。

但是,您可能希望稍后更改它。 无论如何,您可以通过以下几种方式最初创建具有日期格式的字段。

{
birth: new Date('Jun 23, 1912'),
}

因此,一般结构是字段名称后跟一个冒号,然后是数据类型。


在 MongoDB 中将字符串转换为日期

MongoDB 确实允许您将数据类型从字符串切换为日期。 它比您预期的要简单得多。

您需要做的就是添加几行额外的代码,然后就可以开始了。


使用 toDate 运算符

在众多方法中,toDate 运算符可能是使用最频繁的一种。 这是因为它很容易记住并且易于执行。

如果可能,此运算符会将值转换为日期。

但是,如果无法更改为此格式,它会返回错误。 同理,如果要转换的值为 null 或缺失,运算符将返回 null。

请务必注意,如果您的 MongoDB 版本低于 MongoDB 4.0,您可能无法使用此方法。 这是使用 MongoDB 的 toDate 运算符的简单方法。

db.collection.aggregate([
{ "$addFields": {
"created_at": {
"$toDate": "$created_at"
}
} }
])

此代码将更改以所需日期格式存储的字段。 如上所述,如果出现任何错误或数据丢失,运算符将返回错误或空值。


使用转换运算符

另一种可以将字符串转换为日期的方法是转换运算符。 这与 toDate 运算符的工作方式类似,只要您将值转换为日期格式即可。

convert 运算符不同,因为它用于许多转换。

它不限于从字符串到日期的转换。 因此,在使用转换运算符时,定义要将值转换成的数据类型是必要的。

这通常是在使用转换运算符之后使用 to 运算符完成的。 您可以参考下面的代码以更好地理解其使用。

db.collection.aggregate([
{ "$addFields": {
"created_at": {
"$convert": {
"input": "$created_at",
"to": "date"
}
}
} }
])

此代码与上面的 toDate 运算符执行的代码相同。 可以看到,在指定convert运算符之后,to运算符用于指定将值转换为日期格式。

请记住,此运算符仅适用于 MongoDB 4.0 和更新版本。


使用 dateFromString 运算符

如果您使用的是旧版本的 MongoDB,则始终可以使用 dateFromString 运算符来完成您的工作。 这适用于所有版本的 MongoDB 3.6 或更新版本,因此您可能需要更新才能使用此运算符。

dateFromString 运算符允许您将字符串转换为日期对象。 此外,它还有一些附加功能,例如用于指定日期格式和时区的选项。

这是使用此运算符的简单方法。

db.collection.aggregate([
{ "$addFields": {
"created_at": {
"$dateFromString": {
"dateString": "$created_at",
"format": "%m-%d-%Y"/* this option is only available in MongoDB 4.0. or newer versions*/
}
}
} }
])

此代码将允许您进行所需的转换。 此外,如果您拥有正确版本的 MongoDB,您甚至可以使用格式运算符更改日期格式。


使用 set 运算符

如果您更喜欢使用旧版本的 MongoDB,您仍然可以通过使用 set 运算符获得所需的结果。 这在 MongoDB 2.6 和 MongoDB 3.1 之间的所有 MongoDB 版本中都可用,包括两者。

请务必注意,此运算符不仅仅用于将字符串转换为日期。 因此,您必须包括一些手动流程才能完成工作。

您将必须使用 forEach() 方法或游标方法 next() 迭代 find() 方法返回的游标,以访问所需的内容。 您必须在此循环中将所需字段转换为 ISODATE 对象。

最后,您将更新集合运算符,以便可以更新字符串格式。 在下面的代码中,xyz 是包含字符串的字段,必须将其转换为日期格式。

var cursor = db.collection.find({"xyz": {"$exists": true, "$type": 2 }});
while (cursor.hasNext()) {
var doc = cursor.next();
db.collection.update(
{"_id" : doc._id},
{"$set" : {"xyz" : new ISODate(doc.xyz)}}
)
};

使用 ClockTime

在大多数情况下有效的另一种方法是使用 ClockTime。 这实质上是使用 ClockTime 集合和 find() 方法将字符串转换为日期格式。

下面的代码中显示了一个使用示例。

db.ClockTime.find().forEach(function(doc) {
doc.ClockInTime=new Date(doc.ClockInTime);
db.ClockTime.save(doc);
})

我们希望您现在可以找到一种在 MongoDB 上将字符串转换为适合您的日期的方法。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 MongoDB Shell 中列出所有数据库

发布时间:2023/05/11 浏览次数:180 分类:MongoDB

交互式 Mongo Shell 提供了多个用于获取数据的选项。 本文介绍了在 Mongo Shell 中列出数据库的几种不同方法。

MongoDB 中检查字段包含的字符串

发布时间:2023/05/11 浏览次数:1024 分类:MongoDB

这篇文章解决了如何在 MongoDB 中使用正则表达式来确定字段是否包含字符串。在 MongoDB 中使用正则表达式 正则表达式 (regex) 是定义搜索模式的文本字符串。

在 MongoDB 中 upsert 更新插入

发布时间:2023/05/11 浏览次数:214 分类:MongoDB

在 MongoDB 中,upsert 结合了更新和插入命令。 它可以在 update() 和 findAndModify() 操作中使用。MongoDB 中的 upsert 查询 upsert 采用单个布尔参数。

如何卸载 MongoDB

发布时间:2023/05/11 浏览次数:745 分类:MongoDB

要从您的计算机中卸载 MongoDB,您必须先删除 MongoDB 服务、数据库和日志文件。使用这篇 MongoDB 文章,您将能够从 Ubuntu Linux、Mac 和 Windows 卸载 MongoDB。 请务必保留数据备份,因为一旦卸载,便

在 MongoDB 中存储日期和时间

发布时间:2023/05/11 浏览次数:762 分类:MongoDB

本 MongoDB 教程解释了 Date() 对象是什么以及如何使用 Date() 方法对集合进行排序。 这也将帮助您找到在 MongoDB 中显示和存储日期/时间的最佳方法。

MongoDB 按 ID 查找

发布时间:2023/05/11 浏览次数:1856 分类:MongoDB

MongoDB 中的 find by Id() 函数用于获取与用户提供的 id 相匹配的文档。 如果找不到与指定 ID 匹配的文档,则返回空值。

检查 MongoDB 服务器是否正在运行

发布时间:2023/05/11 浏览次数:247 分类:MongoDB

这篇 MongoDB 教程将告诉您如何检查是否安装了 MongoDB 以及安装的 MongoDB 服务器的版本。 它在 Windows、UBUNTU 和 MAC 等不同的操作系统中实现。

MongoDB 中的分页

发布时间:2023/05/11 浏览次数:174 分类:MongoDB

这篇文章将介绍什么是 MongoDB 中的分页。 为什么在 MongoDB 中需要分页以及在 MongoDB 中完成分页的不同方法或方式是什么。

MongoDB 从查询开始

发布时间:2023/05/11 浏览次数:186 分类:MongoDB

在这篇 MongoDB 文章中,用户将学习如何使用 $regex 进行开始查询。 它为查询中的模式匹配字符串提供正则表达式功能。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便