codecamp

SDK数据库 Command·聚合操作符·日期操作符

AggregateCommand.dateFromParts(value: any): Object

支持端:小程序 2.7.4, 云函数 0.8.1, Web

聚合操作符。给定日期的相关信息,构建并返回一个日期对象。

参数

value: any

返回值

Object

API 说明

语法如下:

db.command.aggregate.dateFromParts({
    year: <year>,
    month: <month>,
    day: <day>,
    hour: <hour>,
    minute: <minute>,
    second: <second>,
    millisecond: <ms>,
    timezone: <tzExpression>
})

你也可以使用 ISO 8601 的标准:

db.command.aggregate.dateFromParts({
    isoWeekYear: <year>,
    isoWeek: <week>,
    isoDayOfWeek: <day>,
    hour: <hour>,
    minute: <minute>,
    second: <second>,
    millisecond: <ms>,
    timezone: <tzExpression>
})

示例代码

const $ = db.command.aggregate
db
  .collection('dates')
  .aggregate()
  .project({
    _id: 0,
    date: $.dateFromParts({
        year: 2017,
        month: 2,
        day: 8,
        hour: 12,
        timezone: 'America/New_York'
    }),
  })
  .end()

输出如下:

{
    "date": ISODate("2017-02-08T17:00:00.000Z")
}

AggregateCommand.dateFromString(value: any): Object

支持端:小程序 2.7.4, 云函数 0.8.1, Web

聚合操作符。将一个日期/时间字符串转换为日期对象

参数

value: any

返回值

Object

API 说明

语法如下:

db.command.aggregate.dateFromString({
    dateString: <dateStringExpression>,
    timezone: <tzExpression>
})

示例代码

const $ = db.command.aggregate
db
  .collection('dates')
  .aggregate()
  .project({
    _id: 0,
    date: $.dateFromString({
        dateString: "2019-05-14T09:38:51.686Z"
    })
  })
  .end()

输出如下:

{
    "date": ISODate("2019-05-14T09:38:51.686Z")
}

AggregateCommand.dateToString(value: any): Object

支持端:小程序 2.7.4, 云函数 0.8.1, Web

聚合操作符。根据指定的表达式将日期对象格式化为符合要求的字符串。

参数

value: any

返回值

Object

API 说明

dateToString 的调用形式如下:

db.command.aggregate.dateToString({
  date: <日期表达式>,
  format: <格式化表达式>,
  timezone: <时区表达式>,
  onNull: <空值表达式>
})

下面是四种表达式的详细说明:

名称 描述
日期表达式 必选。指定字段值应该是能转化为字符串的日期。
格式化表达式 可选。它可以是任何包含“格式说明符”的有效字符串。
时区表达式 可选。指明运算结果的时区。它可以解析格式为 UTC Offset 或者 Olson Timezone Identifier 的字符串。
空值表达式 可选。当 <日期表达式> 返回空或者不存在的时候,会返回此表达式指明的值。

下面是格式说明符的详细说明:

说明符 描述 合法值
%d 月份的日期(2位数,0填充) 01 - 31
%G ISO 8601 格式的年份 0000 - 9999
%H 小时(2位数,0填充,24小时制) 00 - 23
%j 一年中的一天(3位数,0填充) 001 - 366
%L 毫秒(3位数,0填充) 000 - 999
%m 月份(2位数,0填充) 01 - 12
%M 分钟(2位数,0填充) 00 - 59
%S 秒(2位数,0填充) 00 - 60
%w 星期几 1 - 7
%u ISO 8601 格式的星期几 1 - 7
%U 一年中的一周(2位数,0填充) 00 - 53
%V ISO 8601 格式的一年中的一周 1 - 53
%Y 年份(4位数,0填充) 0000 - 9999
%z 与 UTC 的时区偏移量 +/-[hh][mm]
%Z 以分钟为单位,与 UTC 的时区偏移量 +/-mmm
%% 百分号作为字符 %

示例代码

假设集合 students 有如下记录:

{ "date": "1999-12-11T16:00:00.000Z", "firstName": "Yuanxin", "lastName": "Dong" }
{ "date": "1998-11-10T16:00:00.000Z", "firstName": "Weijia", "lastName": "Wang" }
{ "date": "1997-10-09T16:00:00.000Z", "firstName": "Chengxi", "lastName": "Li" }

格式化日期

下面是将 date 字段的值,格式化成形如 年份-月份-日期 的字符串:

const $ = db.command.aggregate
db
  .collection('students')
  .aggregate()
  .project({
    _id: 0,
    formatDate: $.dateToString({
      date: '$date',
      format: '%Y-%m-%d'
    })
  })
  .end()

返回的结果如下:

{ "formatDate": "1999-12-11" }
{ "formatDate": "1998-11-10" }
{ "formatDate": "1997-10-09" }

时区时间

下面是将 date 字段值格式化为上海时区时间的例子:

const $ = db.command.aggregate
db
  .collection('students')
  .aggregate()
  .project({
    _id: 0,
    formatDate: $.dateToString({
      date: '$date',
      format: '%H:%M:%S',
      timezone: 'Asia/Shanghai'
    })
  })
  .end()

返回的结果如下:

{ "formatDate": "00:00:00" }
{ "formatDate": "00:00:00" }
{ "formatDate": "00:00:00" }

缺失情况的默认值

当指定的 <日期表达式> 返回空或者不存在的时候,可以设置缺失情况下的默认值:

const $ = db.command.aggregate
db
  .collection('students')
  .aggregate()
  .project({
    _id: 0,
    formatDate: $.dateToString({
      date: '$empty',
      onNull: 'null'
    })
  })
  .end()

返回的结果如下:

{ "formatDate": "null" }
{ "formatDate": "null" }
{ "formatDate": "null" }

AggregateCommand.dayOfMonth(value: Expression<string>): Object

支持端:小程序 2.7.4, 云函数 0.8.1, Web

聚合操作符。返回日期字段对应的天数(一个月中的哪一天),是一个介于 1 至 31 之间的数字。

参数

value: Expression<string>

日期字段

返回值

Object

API 说明

语法如下:

db.command.aggregate.dayOfMonth(<日期字段>)

示例代码

假设集合 dates 有以下文档:

{
    "_id": 1,
    "date": ISODate("2019-05-14T09:38:51.686Z")
}

我们使用 dayOfMonth() 对 date 字段进行投影,获取对应的日期:

const $ = db.command.aggregate
db
  .collection('dates')
  .aggregate()
  .project({
    _id: 0,
    dayOfMonth: $.dayOfMonth('$date')
  })
  .end()

输出如下:

{
    "dayOfMonth": 14
}

AggregateCommand.dayOfWeek(value: Expression<string>): Object

支持端:小程序 2.7.4, 云函数 0.8.1, Web

聚合操作符。返回日期字段对应的天数(一周中的第几天),是一个介于 1(周日)到 7(周六)之间的整数。

参数

value: Expression<string>

日期字段

返回值

Object

API 说明

注意:周日是每周的第 1 天*

语法如下:

db.command.aggregate.dayOfWeek(<日期字段>)

示例代码

假设集合 dates 有以下文档:

{
    "_id": 1,
    "date": ISODate("2019-05-14T09:38:51.686Z")
}

我们使用 dayOfWeek() 对 date 字段进行投影,获取对应的天数(一周中的第几天):

const $ = db.command.aggregate
db
  .collection('dates')
  .aggregate()
  .project({
    _id: 0,
    dayOfWeek: $.dayOfWeek('$date')
  })
  .end()

输出如下:

{
    "dayOfWeek": 3
}

AggregateCommand.dayOfYear(value: Expression<string>): Object

支持端:小程序 2.7.4, 云函数 0.8.1, Web

聚合操作符。返回日期字段对应的天数(一年中的第几天),是一个介于 1 到 366 之间的整数。

参数

value: Expression<string>

日期字段

返回值

Object

API 说明

语法如下:

db.command.aggregate.dayOfYear(<日期字段>)

示例代码

假设集合 dates 有以下文档:

{
    "_id": 1,
    "date": ISODate("2019-05-14T09:38:51.686Z")
}

我们使用 dayOfYear() 对 date 字段进行投影,获取对应的天数(一年中的第几天):

const $ = db.command.aggregate
db
  .collection('dates')
  .aggregate()
  .project({
    _id: 0,
    dayOfYear: $.dayOfYear('$date')
  })
  .end()

输出如下:

{
    "dayOfYear": 134
}

AggregateCommand.hour(value: Expression<string>): Object

支持端:小程序 2.7.4, 云函数 0.8.1, Web

聚合操作符。返回日期字段对应的小时数,是一个介于 0 到 23 之间的整数。

参数

value: Expression<string>

日期字段

返回值

Object

API 说明

语法如下:

db.command.aggregate.hour(<日期字段>)

示例代码

假设集合 dates 有以下文档:

{
    "_id": 1,
    "date": ISODate("2019-05-14T09:38:51.686Z")
}

我们使用 hour() 对 date 字段进行投影,获取对应的小时数:

const $ = db.command.aggregate
db
  .collection('dates')
  .aggregate()
  .project({
    _id: 0,
    hour: $.hour('$date')
  })
  .end()

输出如下:

{
    "hour": 9
}

AggregateCommand.isoDayOfWeek(value: Expression<string>): Object

支持端:小程序 2.7.4, 云函数 0.8.1, Web

聚合操作符。返回日期字段对应的 ISO 8601 标准的天数(一周中的第几天),是一个介于 1(周一)到 7(周日)之间的整数。

参数

value: Expression<string>

日期字段

返回值

Object

API 说明

语法如下:

db.command.aggregate.month(<日期字段>)

示例代码

假设集合 dates 有以下文档:

{
    "_id": 1,
    "date": ISODate("2019-05-14T09:38:51.686Z")
}

我们使用 month() 对 date 字段进行投影,获取对应的 ISO 8601 标准的天数(一周中的第几天):

const $ = db.command.aggregate
db
  .collection('dates')
  .aggregate()
  .project({
    _id: 0,
    isoDayOfWeek: $.isoDayOfWeek('$date')
  })
  .end()

输出如下:

{
    "isoDayOfWeek": 2
}

AggregateCommand.isoWeek(value: Expression<string>): Object

支持端:小程序 2.7.4, 云函数 0.8.1, Web

聚合操作符。返回日期字段对应的 ISO 8601 标准的周数(一年中的第几周),是一个介于 1 到 53 之间的整数。

参数

value: Expression<string>

日期字段

返回值

Object

API 说明

根据 ISO 8601 标准,周一到周日视为一周,本年度第一个周四所在的那周,视为本年度的第 1 周。

例如:2016 年 1 月 7 日是那年的第一个周四,那么 2016.01.04(周一)到 2016.01.10(周日) 即为第 1 周。同理,2016 年 1 月 1 日的周数为 53。

语法如下:

db.command.aggregate.isoWeek(<日期字段>)

示例代码

假设集合 dates 有以下文档:

{
    "_id": 1,
    "date": ISODate("2019-05-14T09:38:51.686Z")
}

我们使用 isoWeek() 对 date 字段进行投影,获取对应的 ISO 8601 标准的周数(一年中的第几周):

const $ = db.command.aggregate
db
  .collection('dates')
  .aggregate()
  .project({
    _id: 0,
    isoWeek: $.isoWeek('$date')
  })
  .end()

输出如下:

{
    "isoWeek": 20
}

AggregateCommand.isoWeekYear(value: Expression<string>): Object

支持端:小程序 2.7.4, 云函数 0.8.1, Web

聚合操作符。返回日期字段对应的 ISO 8601 标准的天数(一年中的第几天)。

参数

value: Expression<string>

日期字段

返回值

Object

API 说明

此处的“年”以第一周的周一为开始,以最后一周的周日为结束。

语法如下:

db.command.aggregate.isoWeekYear(<日期字段>)

示例代码

假设集合 dates 有以下文档:

{
    "_id": 1,
    "date": ISODate("2019-05-14T09:38:51.686Z")
}

我们使用 isoWeekYear() 对 date 字段进行投影,获取对应的 ISO 8601 标准的天数(一年中的第几天):

const $ = db.command.aggregate
db
  .collection('dates')
  .aggregate()
  .project({
    _id: 0,
    isoWeekYear: $.isoWeekYear('$date')
  })
  .end()

输出如下:

{
    "isoWeekYear": 2019
}

AggregateCommand.millisecond(value: Expression<string>): Object

支持端:小程序 2.7.4, 云函数 0.8.1, Web

聚合操作符。返回日期字段对应的毫秒数,是一个介于 0 到 999 之间的整数。

参数

value: Expression<string>

日期字段

返回值

Object

API 说明

语法如下:

db.command.aggregate.millisecond(<日期字段>)

示例代码

假设集合 dates 有以下文档:

{
    "_id": 1,
    "date": ISODate("2019-05-14T09:38:51.686Z")
}

我们使用 millisecond() 对 date 字段进行投影,获取对应的毫秒数:

const $ = db.command.aggregate
db
  .collection('dates')
  .aggregate()
  .project({
    _id: 0,
    millisecond: $.millisecond('$date'),
  })
  .end()

输出如下:

{
    "millisecond": 686
}

AggregateCommand.minute(value: Expression<string>): Object

支持端:小程序 2.7.4, 云函数 0.8.1, Web

聚合操作符。返回日期字段对应的分钟数,是一个介于 0 到 59 之间的整数。

参数

value: Expression<string>

日期字段

返回值

Object

API 说明

语法如下:

db.command.aggregate.minute(<日期字段>)

示例代码

假设集合 dates 有以下文档:

{
    "_id": 1,
    "date": ISODate("2019-05-14T09:38:51.686Z")
}

我们使用 minute() 对 date 字段进行投影,获取对应的分钟数:

const $ = db.command.aggregate
db
  .collection('dates')
  .aggregate()
  .project({
    _id: 0,
    minute: $.minute('$date')
  })
  .end()

输出如下:

{
    "minute": 38
}

AggregateCommand.month(value: Expression<string>): Object

支持端:小程序 2.7.4, 云函数 0.8.1, Web

聚合操作符。返回日期字段对应的月份,是一个介于 1 到 12 之间的整数。

参数

value: Expression<string>

日期字段

返回值

Object

API 说明

语法如下:

db.command.aggregate.month(<日期字段>)

示例代码

假设集合 dates 有以下文档:

{
    "_id": 1,
    "date": ISODate("2019-05-14T09:38:51.686Z")
}

我们使用 month() 对 date 字段进行投影,获取对应的月份:

const $ = db.command.aggregate
db
  .collection('dates')
  .aggregate()
  .project({
    _id: 0,
    month: $.month('$date')
  })
  .end()

输出如下:

{
    "month": 5
}

AggregateCommand.second(value: Expression<string>): Object

支持端:小程序 2.7.4, 云函数 0.8.1, Web

聚合操作符。返回日期字段对应的秒数,是一个介于 0 到 59 之间的整数,在特殊情况下(闰秒)可能等于 60。

参数

value: Expression<string>

日期字段

返回值

Object

API 说明

语法如下:

db.command.aggregate.second(<日期字段>)

示例代码

假设集合 dates 有以下文档:

{
    "_id": 1,
    "date": ISODate("2019-05-14T09:38:51.686Z")
}

我们使用 second() 对 date 字段进行投影,获取对应的秒数:

const $ = db.command.aggregate
db
  .collection('dates')
  .aggregate()
  .project({
    _id: 0,
    second: $.second('$date')
  })
  .end()

输出如下:

{
    "second": 51
}

AggregateCommand.week(value: Expression<string>): Object

支持端:小程序 2.7.4, 云函数 0.8.1, Web

聚合操作符。返回日期字段对应的周数(一年中的第几周),是一个介于 0 到 53 之间的整数。

参数

value: Expression<string>

日期字段

返回值

Object

API 说明

每周以周日为开头,每年的第一个周日即为 week 1 的开始,这天之前是 week 0。

语法如下:

db.command.aggregate.week(<日期字段>)

示例代码

假设集合 dates 有以下文档:

{
    "_id": 1,
    "date": ISODate("2019-05-14T09:38:51.686Z")
}

我们使用 week() 对 date 字段进行投影,获取对应的周数(一年中的第几周):

const $ = db.command.aggregate
db
  .collection('dates')
  .aggregate()
  .project({
    _id: 0,
    week: $.week('$date')
  })
  .end()

输出如下:

{
    "week": 19
}

AggregateCommand.year(value: Expression<string>): Object

支持端:小程序 2.7.4, 云函数 0.8.1, Web

聚合操作符。返回日期字段对应的年份。

参数

value: Expression<string>

日期字段

返回值

Object

API 说明

语法如下:

db.command.aggregate.year(<日期字段>)

示例代码

假设集合 dates 有以下文档:

{
    "_id": 1,
    "date": ISODate("2019-05-14T09:38:51.686Z")
}

我们使用 year() 对 date 字段进行投影,获取对应的年份:

const $ = db.command.aggregate
db
  .collection('dates')
  .aggregate()
  .project({
    _id: 0,
    year: $.year('$date')
  })
  .end()

输出如下:

{
    "year": 2019
}

AggregateCommand.subtract(value: Expression[]): Object

支持端:小程序 2.7.4, 云函数 0.8.1, Web

聚合操作符。将两个数字相减然后返回差值,或将两个日期相减然后返回相差的毫秒数,或将一个日期减去一个数字返回结果的日期。

参数

value: Expression[]

[<expression1>, <expression2>]

返回值

Object

API 说明

语法如下:

db.command.aggregate.subtract([<expression1>, <expression2>])

参数可以是任意解析为数字或日期的表达式。

示例代码

假设集合 scores 有如下记录:

{ "_id": 1, "max": 10, "min": 1 }
{ "_id": 2, "max": 7, "min": 5 }
{ "_id": 3, "max": 6, "min": 6 }

求各个记录的 max 和 min 的差值。:

const $ = db.command.aggregate
db.collection('scores').aggregate()
  .project({
    diff: $.subtract(['$max', '$min'])
  })
  .end()

返回结果如下:

{ "_id": 1, "diff": 9 }
{ "_id": 2, "diff": 2 }
{ "_id": 3, "diff": 0 }


SDK数据库 Command·聚合操作符·条件操作符
SDK数据库 Command·聚合操作符·常量操作符
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

微信小程序 指南

目录结构

开放能力

微信小程序 调试

微信小程序 实时日志

微信小程序 小程序测速

微信小程序 基础组件

微信小程序 API

媒体

界面

微信小程序API 绘图

微信小程序 服务端

接口调用凭证

统一服务消息

微信小程序 服务市场

微信小程序 生物认证

微信小程序 云开发

服务端

微信小程序云开发服务端API 数据库

SDK文档

微信小程序 扩展能力

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }