MongoDB $year 运算符介绍

Mongodb 是一个流行的 NoSQL 数据库,支持丰富的查询操作,包括各种运算符。 $year 运算符是其中一个用于操作日期时间类型的运算符,可以提取一个日期时间字段的年份。

语法

$year 运算符的语法如下:

{ $year: <dateExpression> }

其中,<dateExpression> 是一个表达式,用于表示一个日期时间字段。

使用场景

$year 运算符可以用于各种查询场景,比如统计某个时间段内的数据,或者根据年份对数据进行聚合等等。

示例

假设有一个名为 users 的集合,其中包含以下文档:

{
  "_id": 1,
  "username": "alice",
  "registerDate": ISODate("2022-02-28T12:34:56Z")
}
{
  "_id": 2,
  "username": "bob",
  "registerDate": ISODate("2021-03-15T09:15:23Z")
}
{
  "_id": 3,
  "username": "charlie",
  "registerDate": ISODate("2020-12-01T18:27:09Z")
}

我们可以使用 $year 运算符来提取registerDate字段的年份,并且只返回 2021 年注册的用户的信息,如下所示:

示例数据

db.users.insertMany([
  { _id: 1, username: "alice", registerDate: ISODate("2022-02-28T12:34:56Z") },
  { _id: 2, username: "bob", registerDate: ISODate("2021-03-15T09:15:23Z") },
  { _id: 3, username: "charlie", registerDate: ISODate("2020-12-01T18:27:09Z") }
])

示例代码

db.users.find({ $expr: { $eq: [{ $year: "$registerDate" }, 2021] } })

运行以上代码,得到以下结果:

{ "_id" : 2, "username" : "bob", "registerDate" : ISODate("2021-03-15T09:15:23Z") }

这个查询结果只包含了 bob 这个用户的信息,因为他是 2021 年注册的用户。

结论

$year 运算符可以很方便地提取一个日期时间字段的年份,可以用于各种查询和聚合场景。