在 MongoDB 中将字符串转换为日期
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 上将字符串转换为适合您的日期的方法。
相关文章
比较 MongoDB 中的字段
发布时间:2023/04/21 浏览次数:51 分类:MongoDB
-
在本文中,我们将了解如何比较 MongoDB 中的两个字段。 此外,我们将看到一个相关的示例和解释,以使主题更容易理解。
清除或删除 MongoDB 中的集合
发布时间:2023/04/21 浏览次数:147 分类:MongoDB
-
本篇文章将告诉大家如何删除 MongoDB 数据库中的集合以及删除 MongoDB 中的集合的不同方法。
向 MongoDB 集合中的每个文档添加新字段
发布时间:2023/04/21 浏览次数:107 分类:MongoDB
-
您将在这篇文章中了解 $set 和 $setOnInsert 操作。 此外,利用这两个运算符,快速描述了向 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 中的稀疏索引。 此外,我们将提供一个相关示例并进行解释,以使该主题更容易理解。