MongoDB $currentDate 运算符介绍

Mongodb 是一种面向文档的数据库,它支持许多不同的操作符来进行查询和更新操作。其中之一是 $currentDate 运算符,它可以在文档中设置一个日期字段为当前日期或时间。

语法

$currentDate运算符的语法如下:

{ $currentDate: { <field>: <typeSpecification>, ... } }

其中, <field> 指定要更新的字段名称, <typeSpecification> 指定要设置的日期类型。 <typeSpecification> 可以是一个布尔值或一个日期类型字符串,如:

  • true 表示设置日期为当前时间戳。
  • { $type: "date" } 表示设置日期为当前日期。

使用场景

$currentDate 运算符可用于任何更新操作中,例如 updateOneupdateManyreplaceOne 等。

当您想要在更新操作中自动设置一个日期字段为当前日期或时间时,可以使用 $currentDate 运算符。例如,您可以在用户文档中添加一个 lastLogin 字段,并在用户登录时使用 $currentDate 将其设置为当前日期。

示例

假设我们有以下名为 users 的集合:

{
  "_id": ObjectId("602f5a00b5ff5e89d728c166"),
  "username": "alice",
  "email": "[email protected]",
  "lastLogin": ISODate("2022-02-23T10:23:51.000Z")
},
{
  "_id": ObjectId("602f5a11b5ff5e89d728c167"),
  "username": "bob",
  "email": "[email protected]",
  "lastLogin": ISODate("2022-02-22T08:15:33.000Z")
}

现在,我们想要更新 alicelastLogin 字段为当前日期。我们可以使用以下代码:

db.users.updateOne({ username: "alice" }, { $currentDate: { lastLogin: true } })

运行上述代码后, users 集合将变为:

{
  "_id": ObjectId("602f5a00b5ff5e89d728c166"),
  "username": "alice",
  "email": "[email protected]",
  "lastLogin": ISODate("2023-03-09T05:42:58.000Z")
},
{
  "_id": ObjectId("602f5a11b5ff5e89d728c167"),
  "username": "bob",
  "email": "[email protected]",
  "lastLogin": ISODate("2022-02-22T08:15:33.000Z")
}

可以看到, alicelastLogin 字段已更新为当前时间戳。

结论

$currentDate 运算符是一个非常有用的工具,可以使您在更新操作中自动设置一个日期字段为当前日期或时间。