文档菜单
文档首页
/
MongoDB 手册
/ / / /

$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 开始,mongod 在使用 $currentDate 等更新运算符与空操作数表达式({ })时不再引发错误。空更新不会导致更改,也不会创建 操作日志 条目(这意味着操作是 no-op)。

创建一个名为 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"
}
}

提示

另请参阅

返回

字段