Docs 菜单

Docs 主页开发应用程序MongoDB Manual

$currentDate

在此页面上

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

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

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

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

$currentDate操作符的形式为:

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

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

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

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

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

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

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

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

从 MongoDB5 0mongod$currentDate{ }开始。当您将 等更新操作符与空操作数表达式 ( ) 一起使用时, 、 不再引发错误。空更新不会导致任何更改,也不会创建 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的日期。

从版本4开始。 2 ,更新方法可以接受聚合管道。因此,可以使用聚合阶段$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"
}
}

提示

另请参阅:

← 字段更新运算符
$inc →