对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
See how MongoDB 9.0 delivers up to 2x higher throughput.
MongoDB Branding Shape
Register now >
Docs 菜单

Date() 和 Datetime(mongosh方法)

Date()

以字符串或日期对象的形式返回日期。 日期可以包含日期和时间,称为日期时间 。

BSON规范 规定 Date对象包含 UTC 日期时间 。UTC 是协调通用时。UTC 日期时间存储一个无符号 64 位整数值,表示 Unix 纪元(一月 1,1970 at 00:00:00 UTC)之后的毫秒数。

可以使用 Date() 查找托管在以下环境中的部署:

  • MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务

您可以指定以下任一格式:

  • Date() 在 mongosh 中以字符串形式返回当前日期。

  • new Date() 以Date对象的形式返回当前日期。mongosh 使用 ISODate 助手包装 日期 对象。ISODate 采用 UTC 时间。

您可以通过向 new Date() 构造函数或ISODate() 函数传递符合 ISO-8601 的日期字符串来指定特定日期。其中年份范围为 0 到9999 (含边界值)。这些函数接受以下格式:

  • new Date("<YYYY-mm-dd>") 返回具有指定日期的 ISODate。

  • new Date("<YYYY-mm-ddTHH:MM:ss.sss>") 指定客户端本地时区的日期时间,并返回具有 UTC 指定日期时间的 ISODate。ss.sss 指定秒 (ss) 和毫秒 (.sss)。如果省略,毫秒数将被设置为 0。

  • new Date("<YYYY-mm-ddTHH:MM:ss.sssZ>") 指定 UTC 格式的日期时间,并返回具有指定 UTC 格式的日期时间的 ISODate。ss.sss 指定秒 (ss) 和毫秒 (.sss)。如果省略,毫秒数将被设置为 0。

  • new Date(<integer>) 将日期时间指定为自 UNIX 纪元(1970 年 1 月 1 日)以来的毫秒数,并返回生成的 ISODate 实例。

在内部,Date 对象存储为一个带符号的 64 位整数值,表示自 Unix 纪元(1970 年 1 月 1 日)以来的毫秒数。

并非所有数据库操作和驱动程序都支持完整的 64 位范围。可以安全地处理年份在 0 至 9999(含)之间的日期。

如果 movies集合中不存在具有指定 title 的文档,以下操作将插入一个将字段dateAdded设立为当前日期的文档:

db.movies.updateOne(
{ title: "Upsert Demo Film 2099" },
{
$set: { genre: "Drama" },
$setOnInsert: { dateAdded: new Date() }
},
{ upsert: true }
)
{
acknowledged: true,
insertedId: "...",
matchedCount: 0,
modifiedCount: 0,
upsertedCount: 1
}

提示

要以字符串形式返回日期,请使用 Date() 方法。例如:

var myDateString = Date();

mongosh 使用 ISODate 助手包装日期类型的对象。不过,对象是日期类型。

以下示例使用 new Date() 返回具有指定 UTC 日期时间的 Date 对象:

var myDate = new Date("2016-05-18T16:00:00Z");

可以将日期指定为 ISODate 对象。

以下示例将 released字段中包含 ISODate 对象的文档插入到 sample_mflix数据库的 movies集合中:

db.movies.insertMany( [
{ title: "ISODate Demo: Chocolate", released: new ISODate("2020-05-18T14:10:30.123Z") },
{ title: "ISODate Demo: Strawberry", released: new ISODate("2021-03-20T11:30:05.000Z") },
{ title: "ISODate Demo: Vanilla", released: new ISODate("2021-01-15T06:31:15.456Z") }
] )

以下示例返回 released 日期早于 $lt操作符中指定的 ISODate 的文档:

db.movies.find(
{ released: { $lt: ISODate("2021-02-25T10:03:46.234Z") },
title: /^ISODate Demo:/ },
{ title: 1, released: 1, _id: 0 }
).sort( { released: 1 } ).toArray()
[
{
title: 'ISODate Demo: Chocolate',
released: ISODate('2020-05-18T14:10:30.123Z')
},
{
title: 'ISODate Demo: Vanilla',
released: ISODate('2021-01-15T06:31:15.456Z')
}
]
给本页内容打分