云开发基础之云数据库

来自CloudWiki
跳转至: 导航搜索

云开发基础之云数据库

一、云数据库是什么

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控制台新建集合

Cloud1.png

 

获取数据库的引用

在开始使用数据库API进行增删改查操作之前,需要先获取数据库的引用db

Cloud2.png

 

获取一个集合的引用

通过Collection方法获取一个集合的引用

通过doc方法获取一个文档的引用

Cloud3.png

 

2.**插入数据**

准备工作

假设已经创建了集合todos

插入一条数据

Cloud4.png

 

插入多条数据

SDK支持范围:仅支持云函数端

Cloud19.png

3.**读取数据**

准备工作

假设我们已有一个集合todos,其中包含以下格式文档

Cloud6.png

 

读取一个文档数据

Cloud7.png

 

读取多个文档的数据

通过调用集合上的where方法可以指定查询条件,在调用get方法即可只返回满足指定查询条件的记录

Cloud8.png

 

查询指令

假设我们需要查询进度大于30%的代办事项,那么传入对象表示全等匹配的方法就无法满足了,这时就需要用到查询指令

数据库API提供了大于、小于等多种查询指令,这些指令都暴露在db.command对象上

Cloud9.png

 

逻辑指令

SDK支持范围:Web端和云函数端

除了指定一个字段满足一个条件之外,我们还可以指定一个字段需同时满足多个条件,例如我们查询进度小于或等于50%或颜色为白色或黄色的代办事项

具体的查询指令API文档可参考各SDK API参考

Cloud10.png

4.**更新数据**

更新数据主要有两个方法

update:局部更新一个或多个记录

set:替换更新一个记录

局部更新

使用update方法可以局部更新一个记录或一个集合中的记录,局部更新意味着只有指定的字段会得到更新,其他字段不会受影响

例如我们可以以用以下代码将一个待办事项设置为已完成

Cloud11.png

 

批量跟新

通过where().update()可以找到符合查询条件的文档列表,并进行更新

Cloud12.png

 

代替更新

如果需要替换更新一条记录,可以在记录上使用set方法,替换更新意味着用传入的对象替换指定的记录

Cloud13.png

 

5.**删除数据**

删除一条记录s

对记录使用remove方法可以删除该条记录

客户端上只能删除符合权限的数据

Cloud14.png

删除多条记录

如果需要删除多个数据,可以通过where语句选取多条记录执行删除

客户端上只能删除符合权限的数据

Cloud15.png

三、云数据库的高级功能

1.**聚合搜索**

介绍

聚合主要用来处理数据(统计平均值,求和等)并返回计算后的数据结果

流水线/管道

聚合是一个流水线式的批处作业,初始文档经过多个阶段的流水线处理后,得到转换后的聚合结果

示例

如右图示例:

第一阶段:match阶段过滤了集合中的文档数据(sailing:true表示找出正在出售的书籍)并传给下一阶段

第二阶段:group阶段基于category字段进行分组,并统计处每组中所有记录的sales字段平均值

Cloud16.png

2.**实时推送**

介绍

云开发数据库支持监听集合中符合查询条件的数据的更新事件

SDK支持范围:仅支持Web端

建立监听

使用watch方法即可建立监听,并且返回wathcer对象,用于关闭监听

符合条件的文档有任何变化,都会出发onChange回调

关闭监听

调用watcher.close即可关闭监听

Cloud17.png

 

四、云数据库的控制台管理操作

1.**设置数据库权限**

可以在云开发ColudBase控制台针对没个集合设置对应的权限

Cloud18.png

 

2.**索引管理**

操作步骤

进入云开发CloudBase控制台

切换到【数据库】标签页,并选择需要导入数据的集合,进入索引管理tab页

删除or新建索引

 

3.**导入导出数据**

导入数据

进入云开发CloudBase控制台

切换到【数据库】标签页,并选择需要导入数据的集合,单击【导入】

选择要导入文件的格式以及冲突处理模式,单机【导入】,即可开始导入的过程