迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 数据库 > 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 中的字段

发布时间:2023/04/21 浏览次数:51 分类:MongoDB

在本文中,我们将了解如何比较 MongoDB 中的两个字段。 此外,我们将看到一个相关的示例和解释,以使主题更容易理解。

清除或删除 MongoDB 中的集合

发布时间:2023/04/21 浏览次数:147 分类:MongoDB

本篇文章将告诉大家如何删除 MongoDB 数据库中的集合以及删除 MongoDB 中的集合的不同方法。

MongoDB 截断集合

发布时间:2023/04/21 浏览次数:178 分类:MongoDB

可以根据需要选择两个选项之一来截断下面的集合。 在今天的文章中,我们将学习如何在 MongoDB 中截断集合。

删除 MongoDB 中的重复项

发布时间:2023/04/21 浏览次数:151 分类:MongoDB

在本文中,我们将了解如何删除 MongoDB 中的重复条目,并且我们还将看到一个带有适当解释的示例,以使主题更容易理解。

使用 NodeJS 检查 MongoDB 中是否存在集合

发布时间:2023/04/21 浏览次数:194 分类:MongoDB

在本文中,我们将检查 MongoDB 数据库中是否存在一个集合,并且我们还将查看与主题相关的示例,以使主题更容易理解。 为此,我们将使用 Node.js。

MongoDB 中的唯一索引

发布时间:2023/04/21 浏览次数:144 分类:MongoDB

在这篇教学文章中,您将了解唯一索引、它们是什么以及如何在 MongoDB 中使索引唯一。 此外,还简要详细地解释了使用户的电子邮件在 MongoDB 中唯一。

在 MongoDB 中创建索引

发布时间:2023/04/21 浏览次数:104 分类:MongoDB

索引有助于有效解决查询。 如果没有索引,MongoDB 必须遍历集合中的每个文档才能找到与查询匹配的文档。因此,在今天的文章中,我们将学习如何在 MongoDB 中创建索引。

MongoDB 中的稀疏索引

发布时间:2023/04/21 浏览次数:142 分类:MongoDB

在本文中,我们将讨论 MongoDB 中的稀疏索引。 此外,我们将提供一个相关示例并进行解释,以使该主题更容易理解。

扫一扫阅读全部技术教程

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

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便