SDK数据库 Command聚合操作符字符串操作符
本文整理自网络,侵删。
AggregateCommand.concat(value: Expression[]): Object
支持端:小程序 2.7.4, 云函数 0.8.1, Web聚合操作符。连接字符串,返回拼接后的字符串。
参数
value: Expression[]
[<表达式1>, <表达式2>, ...]
返回值
Object
API 说明
concat 的语法如下:
db.command.aggregate.concat([<表达式1>, <表达式2>, ...])
表达式可以是形如 $ + 指定字段,也可以是普通字符串。只要能够被解析成字符串即可。
示例代码
假设集合 students 的记录如下:
{ "firstName": "Yuanxin", "group": "a", "lastName": "Dong", "score": 84 }{ "firstName": "Weijia", "group": "a", "lastName": "Wang", "score": 96 }{ "firstName": "Chengxi", "group": "b", "lastName": "Li", "score": 80 }
借助 concat 可以拼接 lastName 和 firstName 字段,得到每位学生的名字全称:
const $ = db.command.aggregatedb .collection('students') .aggregate() .project({ _id: 0, fullName: $.concat(['$firstName', ' ', '$lastName']) }) .end()
返回的结果如下:
{ "fullName": "Yuanxin Dong" }{ "fullName": "Weijia Wang" }{ "fullName": "Chengxi Li" }
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.aggregatedb .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.aggregatedb .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.aggregatedb .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.aggregatedb .collection('students') .aggregate() .project({ _id: 0, formatDate: $.dateToString({ date: '$empty', onNull: 'null' }) }) .end()
返回的结果如下:
{ "formatDate": "null" }{ "formatDate": "null" }{ "formatDate": "null" }
AggregateCommand.indexOfBytes(value: Expression[]): Object
支持端:小程序 2.7.4, 云函数 0.8.1, Web聚合操作符。在目标字符串中查找子字符串,并返回第一次出现的 UTF-8 的字节索引(从0开始)。如果不存在子字符串,返回 -1。
参数
value: Expression[]
[<目标字符串表达式>, <子字符串表达式>, <开始位置表达式>, <结束位置表达式>]
返回值
Object
API 说明
indexOfBytes 的语法如下:
db.command.aggregate.indexOfBytes([<目标字符串表达式>, <子字符串表达式>, <开始位置表达式>, <结束位置表达式>])
下面是 4 种表达式的详细描述:
表达式 | 描述 |
---|---|
目标字符串表达式 | 任何可以被解析为字符串的表达式 |
子字符串表达式 | 任何可以被解析为字符串的表达式 |
开始位置表达式 | 任何可以被解析为非负整数的表达式 |
结束位置表达式 | 任何可以被解析为非负整数的表达式 |
示例代码
假设集合 students 的记录如下:
{ "firstName": "Yuanxin", "group": "a", "lastName": "Dong", "score": 84 }{ "firstName": "Weijia", "group": "a", "lastName": "Wang", "score": 96 }{ "firstName": "Chengxi", "group": "b", "lastName": "Li", "score": 80 }
借助 indexOfBytes 查找字符 "a" 在字段 firstName 中的位置:
const $ = db.command.aggregatedb .collection('students') .aggregate() .project({ _id: 0, aStrIndex: $.indexOfBytes(['$firstName', 'a']) }) .end()
返回的结果如下:
{ "aStrIndex": 2 }{ "aStrIndex": 5 }{ "aStrIndex": -1 }
AggregateCommand.indexOfCP(value: Expression[]): Object
支持端:小程序 2.7.4, 云函数 0.8.1, Web聚合操作符。在目标字符串中查找子字符串,并返回第一次出现的 UTF-8 的 code point 索引(从0开始)。如果不存在子字符串,返回 -1。
参数
value: Expression[]
[<目标字符串表达式>, <子字符串表达式>, <开始位置表达式>, <结束位置表达式>]
返回值
Object
API 说明
code point 是“码位”,又名“编码位置”。这里特指 Unicode 包中的码位,范围是从0(16进制)到10FFFF(16进制)。
阅读剩余部分
相关阅读 >>
微信小程序api 实时语音-监听视频状态变化事件
微信小程序画布 canvas
微信小程序云开发服务端数据库api 获取数据库查询及更新指令
微信小程序-canvas生成图片并保存到本地
微信小程序api 背景音频-获取后台播放状态
微信小程序工具细节点
微信小程序 即时配送接口(商家查看)-配送公司信息
微信小程序 扩展组件纵向选项卡组件
微信小程序能不能用vue.js
微信小程序api 接收消息和事件
更多相关阅读请进入《微信小程序》频道 >>
Vue.js 设计与实现 基于Vue.js 3 深入解析Vue.js 设计细节
本书对 Vue.js 3 技术细节的分析非常可靠,对于需要深入理解 Vue.js 3 的用户会有很大的帮助。——尤雨溪,Vue.js作者
猜你喜欢
联络方式:
400-123-789
邮箱:xiachao@163.com
Q Q:12345678