支持端:小程序 2.7.4, 云函数 0.8.1, Web
利川ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联建站的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:028-86922220(备注:SSL证书合作)期待与您的合作!
聚合操作符。给定日期的相关信息,构建并返回一个日期对象。
语法如下:
db.command.aggregate.dateFromParts({
    year: ,
    month: ,
    day: ,
    hour: ,
    minute: ,
    second: ,
    millisecond: ,
    timezone: 
})
        
你也可以使用 ISO 8601 的标准:
db.command.aggregate.dateFromParts({
    isoWeekYear: ,
    isoWeek: ,
    isoDayOfWeek: ,
    hour: ,
    minute: ,
    second: ,
    millisecond: ,
    timezone: 
})
        
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")
}
支持端:小程序 2.7.4, 云函数 0.8.1, Web
聚合操作符。将一个日期/时间字符串转换为日期对象
语法如下:
db.command.aggregate.dateFromString({
    dateString: ,
    timezone: 
})
  
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")
}
支持端:小程序 2.7.4, 云函数 0.8.1, Web
聚合操作符。根据指定的表达式将日期对象格式化为符合要求的字符串。
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" }
支持端:小程序 2.7.4, 云函数 0.8.1, Web
聚合操作符。返回日期字段对应的天数(一个月中的哪一天),是一个介于 1 至 31 之间的数字。
日期字段
语法如下:
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
}
支持端:小程序 2.7.4, 云函数 0.8.1, Web
聚合操作符。返回日期字段对应的天数(一周中的第几天),是一个介于 1(周日)到 7(周六)之间的整数。
日期字段
注意:周日是每周的第 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
}
支持端:小程序 2.7.4, 云函数 0.8.1, Web
聚合操作符。返回日期字段对应的天数(一年中的第几天),是一个介于 1 到 366 之间的整数。
日期字段
语法如下:
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
}
支持端:小程序 2.7.4, 云函数 0.8.1, Web
聚合操作符。返回日期字段对应的小时数,是一个介于 0 到 23 之间的整数。
日期字段
语法如下:
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
}
支持端:小程序 2.7.4, 云函数 0.8.1, Web
聚合操作符。返回日期字段对应的 ISO 8601 标准的天数(一周中的第几天),是一个介于 1(周一)到 7(周日)之间的整数。
日期字段
语法如下:
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
}
支持端:小程序 2.7.4, 云函数 0.8.1, Web
聚合操作符。返回日期字段对应的 ISO 8601 标准的周数(一年中的第几周),是一个介于 1 到 53 之间的整数。
日期字段
根据 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
}
支持端:小程序 2.7.4, 云函数 0.8.1, Web
聚合操作符。返回日期字段对应的 ISO 8601 标准的天数(一年中的第几天)。
日期字段
此处的“年”以第一周的周一为开始,以最后一周的周日为结束。
语法如下:
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
}
支持端:小程序 2.7.4, 云函数 0.8.1, Web
聚合操作符。返回日期字段对应的毫秒数,是一个介于 0 到 999 之间的整数。
日期字段
语法如下:
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
}
支持端:小程序 2.7.4, 云函数 0.8.1, Web
聚合操作符。返回日期字段对应的分钟数,是一个介于 0 到 59 之间的整数。
日期字段
语法如下:
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
}
支持端:小程序 2.7.4, 云函数 0.8.1, Web
聚合操作符。返回日期字段对应的月份,是一个介于 1 到 12 之间的整数。
日期字段
语法如下:
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
}
支持端:小程序 2.7.4, 云函数 0.8.1, Web
聚合操作符。返回日期字段对应的秒数,是一个介于 0 到 59 之间的整数,在特殊情况下(闰秒)可能等于 60。
日期字段
语法如下:
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
}
支持端:小程序 2.7.4, 云函数 0.8.1, Web
聚合操作符。返回日期字段对应的周数(一年中的第几周),是一个介于 0 到 53 之间的整数。
日期字段
每周以周日为开头,每年的第一个周日即为 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
}
支持端:小程序 2.7.4, 云函数 0.8.1, Web
聚合操作符。返回日期字段对应的年份。
日期字段
语法如下:
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
}
支持端:小程序 2.7.4, 云函数 0.8.1, Web
聚合操作符。将两个数字相减然后返回差值,或将两个日期相减然后返回相差的毫秒数,或将一个日期减去一个数字返回结果的日期。
[
语法如下:
db.command.aggregate.subtract([, ])
  
参数可以是任意解析为数字或日期的表达式。
假设集合 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·聚合操作符·日期操作符
                
                文章转载:http://www.csdahua.cn/qtweb/news17/490717.html
            
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网