“云开发基础之云数据库”的版本间的差异
2513177689(讨论 | 贡献) (创建页面,内容为“<p><strong>云开发基础之云数据库</strong></p> <p><strong>一、云数据库是什么</strong></p> <p><strong>1.*</strong>*产品介绍**</p> <p> 云…”) |
|||
(未显示3个用户的6个中间版本) | |||
第1行: | 第1行: | ||
− | < | + | <h1><strong>云开发基础之云数据库</strong></h1> |
− | < | + | <h2><strong>一、云数据库是什么</strong></h2> |
− | < | + | <h3><strong>1.*</strong>*产品介绍**</h3> |
<p> 云数据库是CloudBase提供的核心功能之一,提供基础读写、聚合搜索、数据库事务、实时推送等功能</p> | <p> 云数据库是CloudBase提供的核心功能之一,提供基础读写、聚合搜索、数据库事务、实时推送等功能</p> | ||
− | < | + | <h3><strong>2.*</strong>*特性优势**</h3> |
<p> 文档型DB</p> | <p> 文档型DB</p> | ||
<p> 数据库包含多个近似与JSON数组的集合,数组中的对象是记录,格式为JSON文档</p> | <p> 数据库包含多个近似与JSON数组的集合,数组中的对象是记录,格式为JSON文档</p> | ||
第10行: | 第10行: | ||
<p> 权限控制</p> | <p> 权限控制</p> | ||
<p> 通过API在客户端和云函数内进行数据操作,安全可靠</p> | <p> 通过API在客户端和云函数内进行数据操作,安全可靠</p> | ||
− | < | + | <h3><strong>3.*</strong>*基础概念**</h3> |
<p> 记录</p> | <p> 记录</p> | ||
<p> 云数据库是一种文档型数据库,数据库中的每条记录都是一个类似JSON格式的对象</p> | <p> 云数据库是一种文档型数据库,数据库中的每条记录都是一个类似JSON格式的对象</p> | ||
第18行: | 第18行: | ||
<p> 数据库</p> | <p> 数据库</p> | ||
<p> 每个云开发环境下有且只有一个数据库实例,数据库实例中,可以创建多个集合</p> | <p> 每个云开发环境下有且只有一个数据库实例,数据库实例中,可以创建多个集合</p> | ||
− | < | + | <h3><strong>4.*</strong>*数据类型**</h3> |
<p>云开发数据库提供以下几种数据类型:</p> | <p>云开发数据库提供以下几种数据类型:</p> | ||
<p> String:字符串</p> | <p> String:字符串</p> | ||
第28行: | 第28行: | ||
<p> Date:时间</p> | <p> Date:时间</p> | ||
<p> Null</p> | <p> Null</p> | ||
− | < | + | <h3><strong>5.*</strong>*调用方式**</h3> |
<p> 云数据库可以在用户端(如Web网页、小程序、Flutter)内调用,也可以在服务器(如服务器、云函数)内调用</p> | <p> 云数据库可以在用户端(如Web网页、小程序、Flutter)内调用,也可以在服务器(如服务器、云函数)内调用</p> | ||
<p> 本课程主要介绍如何在web端和云函数端调用云数据库</p> | <p> 本课程主要介绍如何在web端和云函数端调用云数据库</p> | ||
第35行: | 第35行: | ||
<p>云函数端调用</p> | <p>云函数端调用</p> | ||
<p> 通过云函数端调用时,无需鉴权,直接以管理员身份进行数据库的读写操作</p> | <p> 通过云函数端调用时,无需鉴权,直接以管理员身份进行数据库的读写操作</p> | ||
− | < | + | <h2><strong>二、云数据库的基础功能</strong></h2> |
− | < | + | <h3><strong>1.*</strong>*初始化**</h3> |
<p>新建第一个集合</p> | <p>新建第一个集合</p> | ||
<p> 目前仅支持通过云函数端SDK或云开发CloudBase控制台新建集合</p> | <p> 目前仅支持通过云函数端SDK或云开发CloudBase控制台新建集合</p> | ||
− | + | [[文件:cloud1.png]] | |
<p> </p> | <p> </p> | ||
<p>获取数据库的引用</p> | <p>获取数据库的引用</p> | ||
<p> 在开始使用数据库API进行增删改查操作之前,需要先获取数据库的引用db</p> | <p> 在开始使用数据库API进行增删改查操作之前,需要先获取数据库的引用db</p> | ||
− | + | [[文件:cloud2.png]] | |
<p> </p> | <p> </p> | ||
<p>获取一个集合的引用</p> | <p>获取一个集合的引用</p> | ||
<p> 通过Collection方法获取一个集合的引用</p> | <p> 通过Collection方法获取一个集合的引用</p> | ||
<p> 通过doc方法获取一个文档的引用</p> | <p> 通过doc方法获取一个文档的引用</p> | ||
− | + | [[文件:cloud3.png]] | |
<p> </p> | <p> </p> | ||
− | < | + | <h3><strong>2.*</strong>*插入数据**</h3> |
<p> 准备工作</p> | <p> 准备工作</p> | ||
<p> 假设已经创建了集合todos</p> | <p> 假设已经创建了集合todos</p> | ||
<p> 插入一条数据</p> | <p> 插入一条数据</p> | ||
− | + | [[文件:cloud4.png]] | |
<p> </p> | <p> </p> | ||
<p>插入多条数据</p> | <p>插入多条数据</p> | ||
<p> SDK支持范围:仅支持云函数端</p> | <p> SDK支持范围:仅支持云函数端</p> | ||
− | + | [[文件:cloud19.png]] | |
− | < | + | <h3><strong>3.*</strong>*读取数据**</h3> |
<p>准备工作</p> | <p>准备工作</p> | ||
<p> 假设我们已有一个集合todos,其中包含以下格式文档</p> | <p> 假设我们已有一个集合todos,其中包含以下格式文档</p> | ||
− | + | [[文件:cloud6.png]] | |
<p> </p> | <p> </p> | ||
<p>读取一个文档数据</p> | <p>读取一个文档数据</p> | ||
− | + | [[文件:cloud7.png]] | |
<p> </p> | <p> </p> | ||
<p>读取多个文档的数据</p> | <p>读取多个文档的数据</p> | ||
<p> 通过调用集合上的where方法可以指定查询条件,在调用get方法即可只返回满足指定查询条件的记录</p> | <p> 通过调用集合上的where方法可以指定查询条件,在调用get方法即可只返回满足指定查询条件的记录</p> | ||
− | + | [[文件:cloud8.png]] | |
<p> </p> | <p> </p> | ||
− | < | + | <h4>查询指令</h4> |
<p> 假设我们需要查询进度大于30%的代办事项,那么传入对象表示全等匹配的方法就无法满足了,这时就需要用到查询指令</p> | <p> 假设我们需要查询进度大于30%的代办事项,那么传入对象表示全等匹配的方法就无法满足了,这时就需要用到查询指令</p> | ||
<p> 数据库API提供了大于、小于等多种查询指令,这些指令都暴露在db.command对象上</p> | <p> 数据库API提供了大于、小于等多种查询指令,这些指令都暴露在db.command对象上</p> | ||
− | + | [[文件:cloud9.png]] | |
<p> </p> | <p> </p> | ||
− | < | + | <h4>逻辑指令</h4> |
<p> SDK支持范围:Web端和云函数端</p> | <p> SDK支持范围:Web端和云函数端</p> | ||
<p> 除了指定一个字段满足一个条件之外,我们还可以指定一个字段需同时满足多个条件,例如我们查询进度小于或等于50%或颜色为白色或黄色的代办事项</p> | <p> 除了指定一个字段满足一个条件之外,我们还可以指定一个字段需同时满足多个条件,例如我们查询进度小于或等于50%或颜色为白色或黄色的代办事项</p> | ||
<p> 具体的查询指令API文档可参考各SDK API参考</p> | <p> 具体的查询指令API文档可参考各SDK API参考</p> | ||
− | + | [[文件:cloud10.png]] | |
− | < | + | <h3><strong>4.*</strong>*更新数据**</h3> |
<p>更新数据主要有两个方法</p> | <p>更新数据主要有两个方法</p> | ||
<p> update:局部更新一个或多个记录</p> | <p> update:局部更新一个或多个记录</p> | ||
第88行: | 第88行: | ||
<p> 使用update方法可以局部更新一个记录或一个集合中的记录,局部更新意味着只有指定的字段会得到更新,其他字段不会受影响</p> | <p> 使用update方法可以局部更新一个记录或一个集合中的记录,局部更新意味着只有指定的字段会得到更新,其他字段不会受影响</p> | ||
<p> 例如我们可以以用以下代码将一个待办事项设置为已完成</p> | <p> 例如我们可以以用以下代码将一个待办事项设置为已完成</p> | ||
− | + | [[文件:cloud11.png]] | |
<p> </p> | <p> </p> | ||
− | < | + | <h4>批量跟新</h4> |
<p> 通过where().update()可以找到符合查询条件的文档列表,并进行更新</p> | <p> 通过where().update()可以找到符合查询条件的文档列表,并进行更新</p> | ||
− | + | [[文件:cloud12.png]] | |
<p> </p> | <p> </p> | ||
− | < | + | <h4>代替更新</h4> |
<p> 如果需要替换更新一条记录,可以在记录上使用set方法,替换更新意味着用传入的对象替换指定的记录</p> | <p> 如果需要替换更新一条记录,可以在记录上使用set方法,替换更新意味着用传入的对象替换指定的记录</p> | ||
− | + | [[文件:cloud13.png]] | |
<p> </p> | <p> </p> | ||
− | < | + | <h3><strong>5.*</strong>*删除数据**</h3> |
<p>删除一条记录s</p> | <p>删除一条记录s</p> | ||
<p> 对记录使用remove方法可以删除该条记录</p> | <p> 对记录使用remove方法可以删除该条记录</p> | ||
<p> 客户端上只能删除符合权限的数据</p> | <p> 客户端上只能删除符合权限的数据</p> | ||
− | + | [[文件:cloud14.png]] | |
<p>删除多条记录</p> | <p>删除多条记录</p> | ||
<p> 如果需要删除多个数据,可以通过where语句选取多条记录执行删除</p> | <p> 如果需要删除多个数据,可以通过where语句选取多条记录执行删除</p> | ||
<p> 客户端上只能删除符合权限的数据</p> | <p> 客户端上只能删除符合权限的数据</p> | ||
− | + | [[文件:cloud15.png]] | |
− | < | + | <h2><strong>三、云数据库的高级功能</strong></h2> |
− | < | + | <h3><strong>1.*</strong>*聚合搜索**</h3> |
<p>介绍</p> | <p>介绍</p> | ||
<p> 聚合主要用来处理数据(统计平均值,求和等)并返回计算后的数据结果</p> | <p> 聚合主要用来处理数据(统计平均值,求和等)并返回计算后的数据结果</p> | ||
第117行: | 第117行: | ||
<p> 第一阶段:match阶段过滤了集合中的文档数据(sailing:true表示找出正在出售的书籍)并传给下一阶段</p> | <p> 第一阶段:match阶段过滤了集合中的文档数据(sailing:true表示找出正在出售的书籍)并传给下一阶段</p> | ||
<p> 第二阶段:group阶段基于category字段进行分组,并统计处每组中所有记录的sales字段平均值</p> | <p> 第二阶段:group阶段基于category字段进行分组,并统计处每组中所有记录的sales字段平均值</p> | ||
− | + | [[文件:cloud16.png]] | |
− | < | + | <h3><strong>2.*</strong>*实时推送**</h3> |
<p> 介绍</p> | <p> 介绍</p> | ||
<p> 云开发数据库支持监听集合中符合查询条件的数据的更新事件</p> | <p> 云开发数据库支持监听集合中符合查询条件的数据的更新事件</p> | ||
第127行: | 第127行: | ||
<p>关闭监听 </p> | <p>关闭监听 </p> | ||
<p> 调用watcher.close即可关闭监听</p> | <p> 调用watcher.close即可关闭监听</p> | ||
− | + | [[文件:cloud17.png]] | |
<p> </p> | <p> </p> | ||
− | < | + | <h2><strong>四、云数据库的控制台管理操作</strong></h2> |
− | < | + | <h3><strong>1.*</strong>*设置数据库权限**</h3> |
<p> 可以在云开发ColudBase控制台针对没个集合设置对应的权限</p> | <p> 可以在云开发ColudBase控制台针对没个集合设置对应的权限</p> | ||
− | + | [[文件:cloud18.png]] | |
<p> </p> | <p> </p> | ||
− | < | + | <h3><strong>2.*</strong>*索引管理**</h3> |
<p>操作步骤</p> | <p>操作步骤</p> | ||
<p> 进入云开发CloudBase控制台</p> | <p> 进入云开发CloudBase控制台</p> | ||
<p> 切换到【数据库】标签页,并选择需要导入数据的集合,进入索引管理tab页</p> | <p> 切换到【数据库】标签页,并选择需要导入数据的集合,进入索引管理tab页</p> | ||
<p>删除or新建索引</p> | <p>删除or新建索引</p> | ||
− | <p><strong>3.*</strong>*导入导出数据**</ | + | <p> </p> |
+ | <h3><strong>3.*</strong>*导入导出数据**</h3> | ||
<p>导入数据</p> | <p>导入数据</p> | ||
<p> 进入云开发CloudBase控制台</p> | <p> 进入云开发CloudBase控制台</p> |
2020年9月11日 (五) 02:16的最新版本
云开发基础之云数据库
一、云数据库是什么
1.**产品介绍**
云数据库是CloudBase提供的核心功能之一,提供基础读写、聚合搜索、数据库事务、实时推送等功能
2.**特性优势**
文档型DB
数据库包含多个近似与JSON数组的集合,数组中的对象是记录,格式为JSON文档
简单易用
数据库API包含增删改查,操作简单;支持触发器,满足特殊场景
权限控制
通过API在客户端和云函数内进行数据操作,安全可靠
3.**基础概念**
记录
云数据库是一种文档型数据库,数据库中的每条记录都是一个类似JSON格式的对象
集合(collection)
集合由多条记录组成,任何记录必须从属于某个集合
集合是读写操作的主要对象,每个集合都有一个集合名,如users、articles等
数据库
每个云开发环境下有且只有一个数据库实例,数据库实例中,可以创建多个集合
4.**数据类型**
云开发数据库提供以下几种数据类型:
String:字符串
Number:数字
Object:对象
Array:数组
Bool:布尔值
GeoPoint:地理位置点
Date:时间
Null
5.**调用方式**
云数据库可以在用户端(如Web网页、小程序、Flutter)内调用,也可以在服务器(如服务器、云函数)内调用
本课程主要介绍如何在web端和云函数端调用云数据库
Web端调用
通过Web端调用时,需要先进性云开发的登录鉴权,然后以用户的身份进行数据库的读写操作
云函数端调用
通过云函数端调用时,无需鉴权,直接以管理员身份进行数据库的读写操作
二、云数据库的基础功能
1.**初始化**
新建第一个集合
目前仅支持通过云函数端SDK或云开发CloudBase控制台新建集合
获取数据库的引用
在开始使用数据库API进行增删改查操作之前,需要先获取数据库的引用db
获取一个集合的引用
通过Collection方法获取一个集合的引用
通过doc方法获取一个文档的引用
2.**插入数据**
准备工作
假设已经创建了集合todos
插入一条数据
插入多条数据
SDK支持范围:仅支持云函数端
3.**读取数据**
准备工作
假设我们已有一个集合todos,其中包含以下格式文档
读取一个文档数据
读取多个文档的数据
通过调用集合上的where方法可以指定查询条件,在调用get方法即可只返回满足指定查询条件的记录
查询指令
假设我们需要查询进度大于30%的代办事项,那么传入对象表示全等匹配的方法就无法满足了,这时就需要用到查询指令
数据库API提供了大于、小于等多种查询指令,这些指令都暴露在db.command对象上
逻辑指令
SDK支持范围:Web端和云函数端
除了指定一个字段满足一个条件之外,我们还可以指定一个字段需同时满足多个条件,例如我们查询进度小于或等于50%或颜色为白色或黄色的代办事项
具体的查询指令API文档可参考各SDK API参考
4.**更新数据**
更新数据主要有两个方法
update:局部更新一个或多个记录
set:替换更新一个记录
局部更新
使用update方法可以局部更新一个记录或一个集合中的记录,局部更新意味着只有指定的字段会得到更新,其他字段不会受影响
例如我们可以以用以下代码将一个待办事项设置为已完成
批量跟新
通过where().update()可以找到符合查询条件的文档列表,并进行更新
代替更新
如果需要替换更新一条记录,可以在记录上使用set方法,替换更新意味着用传入的对象替换指定的记录
5.**删除数据**
删除一条记录s
对记录使用remove方法可以删除该条记录
客户端上只能删除符合权限的数据
删除多条记录
如果需要删除多个数据,可以通过where语句选取多条记录执行删除
客户端上只能删除符合权限的数据
三、云数据库的高级功能
1.**聚合搜索**
介绍
聚合主要用来处理数据(统计平均值,求和等)并返回计算后的数据结果
流水线/管道
聚合是一个流水线式的批处作业,初始文档经过多个阶段的流水线处理后,得到转换后的聚合结果
示例
如右图示例:
第一阶段:match阶段过滤了集合中的文档数据(sailing:true表示找出正在出售的书籍)并传给下一阶段
第二阶段:group阶段基于category字段进行分组,并统计处每组中所有记录的sales字段平均值
2.**实时推送**
介绍
云开发数据库支持监听集合中符合查询条件的数据的更新事件
SDK支持范围:仅支持Web端
建立监听
使用watch方法即可建立监听,并且返回wathcer对象,用于关闭监听
符合条件的文档有任何变化,都会出发onChange回调
关闭监听
调用watcher.close即可关闭监听
四、云数据库的控制台管理操作
1.**设置数据库权限**
可以在云开发ColudBase控制台针对没个集合设置对应的权限
2.**索引管理**
操作步骤
进入云开发CloudBase控制台
切换到【数据库】标签页,并选择需要导入数据的集合,进入索引管理tab页
删除or新建索引
3.**导入导出数据**
导入数据
进入云开发CloudBase控制台
切换到【数据库】标签页,并选择需要导入数据的集合,单击【导入】
选择要导入文件的格式以及冲突处理模式,单机【导入】,即可开始导入的过程