Docs 菜单
Docs 主页
/
MongoDB Manual
/ / / /

$currentDate

在此页面上

  • 定义
  • 兼容性
  • 语法
  • 行为
  • 例子
$currentDate

$currentDate 操作符将字段的值设置为当前日期,可以是 日期,也可以是时间戳。默认类型为日期

可以使用 $currentDate 查找托管在以下环境中的部署:

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

$currentDate 操作符具有如下形式:

{ $currentDate: { <field1>: <typeSpecification1>, ... } }

<typeSpecification> 可以为以下任一项:

  • 布尔值为 true 可将字段值设置为当前日期作为“日期”,或者

  • 显式指定类型的文档 { $type: "timestamp" }{ $type: "date" }。该操作符区分大小写,仅接受小写的 "timestamp" 或小写的 "date"

要在嵌入式文档或数组中指定 <field>,请使用点符号。

从 MongoDB 5.0 开始,更新操作符按字典顺序处理具有基于字符串的名称的文档字段。具有数字名称的字段按数字顺序处理。详情请参阅更新操作符行为

$currentDate 将指定字段设置为运行 $currentDate 时的日期。

如果该字段不存在,则 $currentDate 会将该字段添加到文档中。

从 MongoDB 5.0 开始,使用带空操作数表达式 ({ }) 的更新操作符(如 $currentDate)时,mongod 不会再引发错误。空更新不会导致任何变化,也不会创建 oplog 条目(意味着该操作为“无操作”)。

创建一个包含以下文档的样本集合 customers

db.customers.insertOne(
{ _id: 1, status: "a", lastModified: ISODate("2013-10-02T01:11:18.965Z") }
)

以下操作将 lastModified 字段更新为当前日期,将 "cancellation.date" 字段更新为当前时间戳,并将 status 字段更新为 "D" 以及 "cancellation.reason""user request"

db.customers.updateOne(
{ _id: 1 },
{
$currentDate: {
lastModified: true,
"cancellation.date": { $type: "timestamp" }
},
$set: {
"cancellation.reason": "user request",
status: "D"
}
}
)

$currentDate 将指定字段设置为运行 $currentDate 时的日期。

要验证更新:

db.customers.find()

更新后的文档类似于:

{
"_id" : 1,
"status" : "D",
"lastModified" : ISODate("2020-01-22T21:21:41.052Z"),
"cancellation" : {
"date" : Timestamp(1579728101, 1),
"reason" : "user request"
}
}

在前面展示的更新示例中,lastModified 字段设置为运行 $currentDate 时的日期。

更新方法可以接受聚合管道。具体来说,使用聚合阶段 $set 和聚合变量 NOW(表示当前日期时间)和 CLUSTER_TIME(表示当前时间戳),可以将前面的示例改写如下:

提示

  • 要访问聚合变量,在变量前加上双美元符号 $$ 并用引号引起来。

  • CLUSTER_TIME 仅适用于副本集和分片集群。

  • 在整个管道中,NOWCLUSTER_TIME 的值将保持不变。

db.customers.updateOne(
{ _id: 1 },
[
{ $set: { lastModified: "$$NOW", cancellation: {date: "$$CLUSTER_TIME", reason: "user request"}, status: "D" } }
]
)

操作完成后,可以查询集合以验证更新:

db.customers.find().pretty()

查询应返回以下文档:

{
"_id" : 1,
"status" : "D",
"lastModified" : ISODate("2020-01-22T21:02:18.994Z"),
"cancellation" : {
"date" : Timestamp(1579726934, 2),
"reason" : "user request"
}
}

提示

另请参阅:

后退

字段