设置权限
针对每个集合设置对应的权限,可在权限设置下设置:
索引管理
在集合中为查询条件的字段建立索引,是保证数据库性能、提升用户体验的重要手段。
操作步骤
1. 前往 云开发统一工作台,选择要访问的环境,进入云数据库页面。
2. 切换到数据库集合页,并选择需要导入数据的集合。
3. 进入索引管理页面可进行删除或新建索引操作。
单字段索引
您可以为查询条件对应的字段创建单字段索引,如果该字段是嵌套字段,可以使用点表示法。例如对如下格式的记录中的 color 字段进行索引时,可以用 style.color 表示。
{"_id": "","style": {"color": ""}}
在设置单字段索引时,可任意指定索引的排序为升序或降序,数据库总能在对索引字段的排序查询中,进行正确的排序。
组合索引
组合索引即一个索引包含多个字段。当查询条件使用的字段包含在索引定义的所有字段或前缀字段里时,会命中索引,优化查询性能。
说明:
索引前缀即组合索引的字段中定义的前 1 到多个字段,例如对集合 students 中 name、age、score 三个字段按顺序定义了组合索引,那么该索引的前缀包含:
name
name, age
能命中索引的查询字段组合包含:
name
name, age
name, age, score
{"_id": "1","name": "luke","age": 26,"score": 80}
组合索引具有以下特点:
1. 字段顺序决定组合索引效果:
例如,定义组合索引分别为 name, age 与 age, name 是不同的。当组合索引为 name, age 时,其索引前缀为 name,对字段 name 的查询可以命中 name, age 索引,而对字段 age 的查询无法命中该索引,因为 age 不属于 name, age 的前缀(反之字段 age 能命中 age, name 索引)。
2. 查询字段排序影响命中索引:
组合索引为 age:升序,score:降序,字段排序对索引命中效果如下:
age:升序,score:降序 | age:降序,score:升序 | age:升序,score:升序 | age:降序,score:降序 | score:升序/降序,age:升序/降序 |
命中 | 命中 | 未命中 | 未命中 | 未命中 |
组合索引为 age:升序,score:升序,字段排序对索引命中效果如下:
age:升序,score:升序 | age:降序,score:降序 | age:升序,score:降序 | age:降序,score:升序 | score:升序/降序,age:升序/降序 |
命中 | 命中 | 未命中 | 未命中 | 未命中 |
地理位置索引
云开发目前支持建立平面几何的地理位置索引,使用地理位置查询功能时,必须为地理位置数据的字段建立地理位置索引。
例如对含地理位置字段 point 的集合建立地理位置索引:
{"_id": "","point": new db.Geo.Point(50, 50)}
索引使用注意事项
唯一性限制
创建索引时,索引属性选择唯一,即可添加唯一性限制。此限制会要求集合中索引字段对应的值不能重复。
例如,某个集合内建立了索引字段 foo,且属性为唯一,那么在这个集合内,要求不能存在 foo 字段相同的文档。
说明:
需特别注意的是,假如记录中不存在某个字段,则对索引字段来说其值默认为 null。如果索引有唯一性限制,则不允许存在两个或以上的该字段为空 / 不存在该字段的记录。
大小限制
索引的字段大小限制不能超过 1024 字节。
添加索引时,如果集合中已有文档索引字段超过 1024 字节,添加索引时将报错。
已设置索引的字段,如果插入一个文档,文档中该字段超过 1024 字节将会报错。
说明:
每个英文字母(不分大小写)占一字节的空间,每个中文汉字占两字节的空间。
正则表达式
正则查询无法使用索引提升性能。
导入数据
操作步骤
1. 登录 云开发 CloudBase 控制台 ,并单击前往云开发统一工作台。
2. 切换到数据库集合页,并选择需要导入数据的集合。进入对应的集合管理页面,单击导入。
3. 选择要导入文件的格式以及冲突处理模式,单击导入,即可开始导入的过程。
说明:
目前提供了 Insert、Upsert 两种冲突处理模式。
Insert 模式会在导入时总是插入新记录。
Upsert 模式会判断有无该条记录,如果有则更新记录,否则就插入一条新记录。
JSON、CSV 文件必须是 UTF-8 的编码格式,且其内容类似 MongoDB 的导出格式,示例代码如下:
{"_id": "xxxxxx","age": 45}{"_id": "yyyyyy","age": 21}
_id, agexxxxxx, 45yyyyyy, 21
说明:
JSON 数据不是数组,而是类似 JSON Lines,即各个记录对象之间使用 \\n 分隔,而非逗号。
JSON 数据每个键值对的键名首尾不能是 . ,例如 ".a"、"abc.",且不能包含多个连续的 . ,例如 "a..b"。
键名不能重复,且不能有歧义,例如 {"a": 1, "a": 2} 或 {"a": {"b": 1}, "a.b": 2}。
时间格式须为 ISODate 格式,例如 "date": { "$date" : "2018-08-31T17:30:00.882Z" }。
当使用 Insert 冲突处理模式时,同一文件不能存在重复的 _id 字段,或与数据库已有记录相同的 _id 字段。
CSV 格式的数据默认以第一行作为导入后的所有键名,余下的每一行则是与首行键名一一对应的键值记录。
4. 导入完成后,您可以在提示信息中看到本次导入记录的情况。
导出数据
云开发支持导出集合已有的数据(目前仅支持导出 CSV、JSON 格式的文件数据)。
操作步骤
1. 登录 云开发 CloudBase 控制台 ,并点击前往云开发统一工作台。
2. 切换到数据库集合页,并选择需要导出数据的集合,单击导出。
3. 选择要导出的格式、保存的位置、以及字段,单击导出,即可开始导出的过程。
当选择导出格式为 JSON 时,若不填写字段项,则默认导出所有数据。
当选择导出格式为 CSV 时,则字段为必填项。字段之间使用英文逗号隔开。
字段示例代码如下所示:
_id, name, age, gender;