MongoDB 是一个广受欢迎的 NoSQL 数据库,在前端开发中大量使用。其中,涉及到日期操作时,MongoDB 提供了多种方法。本文将详细介绍这些方法,让您能够更加轻松地处理日期。
日期格式
MongoDB 中的日期格式采用 ISODate 格式,如下所示:
ISODate("2020-07-01T10:00:00.000Z")
其中,ISODate() 是 MongoDB 中的内置函数,用于将字符串转换为日期格式。在这个示例中,日期格式为“年-月-日 时:分:秒.毫秒”,并且时区为 UTC。
另外,也可以使用 Date() 函数创建日期:
new Date("2020-07-01T10:00:00.000Z")
这与 ISODate() 函数的效果是相同的。
日期计算
MongoDB 中提供了多种日期计算函数,如下所示:
$year
用于提取给定日期的年份,示例如下:
db.myCollection.aggregate([ {$project: {year: {$year: "$date"}}} ])
其中,$project 运算符用于指定输出结果包含 date 字段的年份。
$month
用于提取给定日期的月份,示例如下:
db.myCollection.aggregate([ {$project: {month: {$month: "$date"}}} ])
其中,$project 运算符用于指定输出结果包含 date 字段的月份。
$dayOfMonth
用于提取给定日期的月份中的天数,示例如下:
db.myCollection.aggregate([ {$project: {dayOfMonth: {$dayOfMonth: "$date"}}} ])
其中,$project 运算符用于指定输出结果包含 date 字段的月份中的天数。
$dayOfWeek
用于提取给定日期的星期几,示例如下:
db.myCollection.aggregate([ {$project: {dayOfWeek: {$dayOfWeek: "$date"}}} ])
其中,$project 运算符用于指定输出结果包含 date 字段的星期几。
$hour
用于提取给定日期的小时数,示例如下:
db.myCollection.aggregate([ {$project: {hour: {$hour: "$date"}}} ])
其中,$project 运算符用于指定输出结果包含 date 字段的小时数。
$minute
用于提取给定日期的分钟数,示例如下:
db.myCollection.aggregate([ {$project: {minute: {$minute: "$date"}}} ])
其中,$project 运算符用于指定输出结果包含 date 字段的分钟数。
$second
用于提取给定日期的秒数,示例如下:
db.myCollection.aggregate([ {$project: {second: {$second: "$date"}}} ])
其中,$project 运算符用于指定输出结果包含 date 字段的秒数。
$millisecond
用于提取给定日期的毫秒数,示例如下:
db.myCollection.aggregate([ {$project: {millisecond: {$millisecond: "$date"}}} ])
其中,$project 运算符用于指定输出结果包含 date 字段的毫秒数。
日期范围查询
在 MongoDB 中,可以使用 $gte 和 $lt 操作符来查询指定日期范围内的数据。示例如下:
db.myCollection.find({date: {$gte: ISODate("2020-07-01T00:00:00.000Z"), $lt: ISODate("2020-08-01T00:00:00.000Z")}})
其中,查询结果包括了日期在 2020 年 7 月份内的所有数据。
日期格式化
MongoDB 中的日期格式化函数是 $dateToString,可以将日期格式化为指定的字符串格式。示例如下:
db.myCollection.aggregate([ {$project: {myDate: {$dateToString: {format: "%Y-%m-%d", date: "$date"}}}} ])
其中,$project 运算符用于指定输出结果包含 date 字段格式化后的日期。
总结
本文介绍了 MongoDB 中的日期操作,包括日期格式、日期计算、日期范围查询和日期格式化。这些操作可以帮助您更加轻松地操作日期数据,提高开发效率。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64d19139b5eee0b5258cbbba