From d7ed7455dd2bbac4407a5ba69d188de5f7072834 Mon Sep 17 00:00:00 2001 From: wangyaqi Date: Tue, 3 Nov 2020 13:09:30 +0800 Subject: [PATCH] docs: uniCloud database index --- docs/uniCloud/hellodb.md | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/docs/uniCloud/hellodb.md b/docs/uniCloud/hellodb.md index b031776c2a..54e9f767b4 100644 --- a/docs/uniCloud/hellodb.md +++ b/docs/uniCloud/hellodb.md @@ -150,12 +150,16 @@ db.createCollection("table1") 在uniCloud的web控制台可以看到一个集合的3部分内容。 +### 数据内容 + data很简单,就是存放的数据记录(record)。 实际上,创建一条新记录,是不管在web控制台创建,还是通过API创建,每条记录都会自带一个`_id`字段用以作为该记录的唯一标志。 `_id`字段是每个集合默认自带且不可删除的字段。同时,它也是集合的索引。 +### 数据库索引 + 所谓索引,是指在集合的众多字段中挑选一个或多个字段,让数据库引擎优先处理这些字段。设置为索引的字段,在通过该字段查询记录时可以获得更快的查询速度。 一个集合可以有多个字段被设为索引。 @@ -168,11 +172,42 @@ data很简单,就是存放的数据记录(record)。 如果我们要根据name字段来查询,为了提升查询速度,此时可以把name字段设为非唯一索引。 +如果对一个文章点赞表,设置文章id和用户id为组合索引,且将此索引设置为唯一索引可以完全限制同一用户对一篇文章多次点赞。 + +**在web控制台添加上述索引** + +![](https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/fca53140-1d91-11eb-880a-0db19f4f74bb.jpg) + +**在db_init.json内添加上述索引** + +```json +{ + "opendb-news-article": { + "data": [], + "index":[{ + "IndexName": "user_article_", // 索引名称 + "MgoKeySchema": { // 索引规则 + "MgoIndexKeys": [{ + "Name": "user_id", // 索引字段 + "Direction": "1" // 索引方向,1:ASC-升序,-1:DESC-降序,2dsphere:地理位置 + },{ + "Name": "article_id", // 索引字段 + "Direction": "1" // 索引方向,1:ASC-升序,-1:DESC-降序,2dsphere:地理位置 + }], + "MgoIsUnique": false // 索引是否唯一 + } + }] + } +} +``` + **注意** - 如果记录中已经存在多个记录某字段相同的情况,那么将该字段设为唯一型索引会失败。 - 如果已经设置某字段为唯一索引,在新增和修改记录时如果该字段的值之前在其他记录已存在,会失败。 - 假如记录中不存在某个字段,则对索引字段来说其值默认为 null,如果该索引字段设为唯一型索引,则不允许存在两个或以上的该字段为null或不存在该字段的记录。 +### 数据表格式定义 + `DB Schema`是集合的表结构描述。描述集合有哪些字段、值域类型是什么、是否必填、数据操作权限等很多内容。 因为json文档数据库的灵活性,data数据的字段可以不在schema的描述范围内。 @@ -245,7 +280,7 @@ uniCloud数据库提供了多种数据导入导出和备份方案。 `db_init.json`包含三部分:数据内容(data)、数据表索引(index)、数据表结构(schema),形式如下 -``` +```json { "collection_test": { // 集合(表名) "data": [ // 数据 -- GitLab