Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
unidocs-zh
提交
a5c41750
unidocs-zh
项目概览
DCloud
/
unidocs-zh
通知
3172
Star
105
Fork
804
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
93
列表
看板
标记
里程碑
合并请求
67
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
unidocs-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
93
Issue
93
列表
看板
标记
里程碑
合并请求
67
合并请求
67
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
a5c41750
编写于
11月 11, 2022
作者:
C
chenruilong
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
docs: update jql
上级
be9a973e
变更
2
展开全部
隐藏空白更改
内联
并排
Showing
2 changed file
with
129 addition
and
269 deletion
+129
-269
docs/uniCloud/jql-operator-example.md
docs/uniCloud/jql-operator-example.md
+102
-6
docs/uniCloud/jql.md
docs/uniCloud/jql.md
+27
-263
未找到文件。
docs/uniCloud/jql-operator-example.md
浏览文件 @
a5c41750
...
@@ -9,12 +9,13 @@ uniCloud的云数据库,提供了一批强大的运算方法。这些方法是
...
@@ -9,12 +9,13 @@ uniCloud的云数据库,提供了一批强大的运算方法。这些方法是
比如sum()方法,可以对多行记录的某个字段值求和、可以对单行记录的若干字段的值求和,如果字段是一个数组,还可以对数组的各项求和。
比如sum()方法,可以对多行记录的某个字段值求和、可以对单行记录的若干字段的值求和,如果字段是一个数组,还可以对数组的各项求和。
为方便书写,JQL内将数据库运算方法的用法进行了简化(相对于
[
原始数据库运算方法写法
](
cf-database-aggregate-operator.md
)
而言),主要是参数摊平,以字符串方式表达。以下是可以在JQL中使用的数据库运算方法
为方便书写,JQL内将数据库运算方法的用法进行了简化(相对于
[
原始数据库运算方法写法
](
cf-database-aggregate-operator.md
)
而言),主要是参数摊平,以字符串方式表达。以下是可以在JQL中使用的数据库运算方法
## 运算方法汇总
##
数据库
运算方法汇总
### 完整运算方法列表
### 完整运算方法列表
|运算方法 |用途 |JQL简化用法 |说明 |
|--- |--- |--- |--- |
|运算方法 |用途|JQL简化用法|说明|
|abs |返回一个数字的绝对值 |abs(表达式) |- |
|---|---|---|---|
|add |将数字相加或将数字加在日期上。如果参数中的其中一个值是日期,那么其他值将被视为毫秒数加在该日期上 |add(表达式1,表达式2) |- |
|abs|返回一个数字的绝对值|abs(表达式)|- |
|add |将数字相加或将数字加在日期上。如果参数中的其中一个值是日期,那么其他值将被视为毫秒数加在该日期上 |add(表达式1,表达式2) |- |
|ceil |向上取整 |ceil(表达式) |- |
|ceil |向上取整 |ceil(表达式) |- |
|divide |传入被除数和除数,求商 |divide(表达式1,表达式2) |- |
|divide |传入被除数和除数,求商 |divide(表达式1,表达式2) |- |
|exp |取 e(自然对数的底数,欧拉数) 的 n 次方 |exp(表达式) |- |
|exp |取 e(自然对数的底数,欧拉数) 的 n 次方 |exp(表达式) |- |
...
@@ -107,6 +108,100 @@ uniCloud的云数据库,提供了一批强大的运算方法。这些方法是
...
@@ -107,6 +108,100 @@ uniCloud的云数据库,提供了一批强大的运算方法。这些方法是
|sum |在groupField内返回一组字段所有数值的总和,非groupField内返回一个数组所有元素的和 |sum(表达式) |- |
|sum |在groupField内返回一组字段所有数值的总和,非groupField内返回一个数组所有元素的和 |sum(表达式) |- |
|let |自定义变量,并且在指定表达式中使用,返回的结果是表达式的结果 |let(vars,in) |- |
|let |自定义变量,并且在指定表达式中使用,返回的结果是表达式的结果 |let(vars,in) |- |
以上操作符还可以组合使用
例:数据表article内有以下数据
```
js
{
"
_id
"
:
"
1
"
,
"
publish_date
"
:
1611141512751
,
"
content
"
:
"
hello uniCloud content 01
"
,
"
content
"
:
"
hello uniCloud title 01
"
,
}
{
"
_id
"
:
"
2
"
,
"
publish_date
"
:
1611141512752
,
"
content
"
:
"
hello uniCloud content 02
"
,
"
content
"
:
"
hello uniCloud title 02
"
,
}
{
"
_id
"
:
"
3
"
,
"
publish_date
"
:
1611141512753
,
"
content
"
:
"
hello uniCloud content 03
"
,
"
content
"
:
"
hello uniCloud title 03
"
,
}
```
可以通过以下查询将publish_date字段从时间戳转为
`2021-01-20`
形式,然后进行按天进行统计
```
js
const
res
=
await
db
.
collection
(
'
article
'
)
.
groupBy
(
'
dateToString(add(new Date(0),publish_date),"%Y-%m-%d","+0800") as publish_date_str
'
)
.
groupField
(
'
count(*) as total
'
)
.
get
()
```
上述代码使用add方法将publish_date时间戳转为日期类型,再用dateToString将上一步的日期按照时区'+0800'(北京时间),格式化为
`4位年-2位月-2位日`
格式,完整格式化参数请参考
[
dateToString
](
uniCloud/cf-database-aggregate-operator.md?id=datetostring
)
。
上述代码执行结果为
```
js
res
=
{
result
:
{
data
:
[{
publish_date_str
:
'
2021-01-20
'
,
total
:
3
}]
}
}
```
**注意**
运算方法中仅数据库字段可以直接去除引号作为变量书写,其他字符串仍要写成字符串形式
例:
数据库内有以下数据:
```
js
{
"
_id
"
:
1
,
"
sales
"
:
[
1.32
,
6.93
,
2.48
,
2.82
,
5.74
]
}
{
"
_id
"
:
2
,
"
sales
"
:
[
2.97
,
7.13
,
1.58
,
6.37
,
3.69
]
}
```
云函数内对以下数据中的sales字段取整
```
js
const
db
=
uniCloud
.
database
()
const
$
=
db
.
command
.
aggregate
let
res
=
await
db
.
collection
(
'
stats
'
).
aggregate
()
.
project
({
truncated
:
$
.
map
({
input
:
'
$sales
'
,
as
:
'
num
'
,
in
:
$
.
trunc
(
'
$$num
'
),
})
})
.
end
()
```
JQL语法内同样功能的实现
```
js
const
db
=
uniCloud
.
database
()
const
res
=
await
db
.
collection
(
'
stats
'
)
.
field
(
'
map(sales,"num",trunc("$$num")) as truncated
'
)
.
get
()
```
### 分组运算方法@accumulator
### 分组运算方法@accumulator
...
@@ -130,7 +225,8 @@ groupField内可使用且仅能使用如下运算方法。
...
@@ -130,7 +225,8 @@ groupField内可使用且仅能使用如下运算方法。
|sum |返回一组字段所有数值的总和 |sum(表达式) |- |
|sum |返回一组字段所有数值的总和 |sum(表达式) |- |
|mergeObjects |将一组对象合并为一个对象 |mergeObjects(表达式) |在groupField内使用时仅接收一个参数 |
|mergeObjects |将一组对象合并为一个对象 |mergeObjects(表达式) |在groupField内使用时仅接收一个参数 |
## 常用运算方法
## 常用运算方法示例
以下列举常用的运算方法在 JQL 中的应用
以下列举常用的运算方法在 JQL 中的应用
### 算术运算方法
### 算术运算方法
...
...
docs/uniCloud/jql.md
浏览文件 @
a5c41750
此差异已折叠。
点击以展开。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录