From c48e8710f4f0d314f8de1fd11aff53907af2890f Mon Sep 17 00:00:00 2001 From: wanganxp Date: Tue, 29 Sep 2020 03:39:29 +0800 Subject: [PATCH] Update cf-database.md --- docs/uniCloud/cf-database.md | 112 +++++++++++++++++------------------ 1 file changed, 55 insertions(+), 57 deletions(-) diff --git a/docs/uniCloud/cf-database.md b/docs/uniCloud/cf-database.md index e7d137d4c..58ef4ed99 100644 --- a/docs/uniCloud/cf-database.md +++ b/docs/uniCloud/cf-database.md @@ -99,47 +99,47 @@ uniCloud会在每天备份一次数据库,最多保留7天。 3. 选择可回档时间 4. 选择需要回档的集合(注意:回档后集合不能与现有集合重名,如需对集合重命名可以在集合列表处操作) -![数据库回档](https://img.cdn.aliyun.dcloud.net.cn/uni-app/uniCloud/unicloud-db-backup.jpg) - -## 数据导出@export - -**此功能暂时只有阿里云支持** - -此功能主要用于导出整个集合的数据 - -**用法** - -1. 进入[uniCloud web控制台](https://unicloud.dcloud.net.cn/home),选择服务空间,或者直接在HBuilderX云函数目录`cloudfunctions`上右键打开uniCloud web控制台 -2. 进入云数据库选择希望导入数据的集合 -3. 点击导出按钮 -4. 选择导出格式,如果选择csv格式还需要选择导出字段 -5. 点击确定按钮等待下载开始即可 - -**注意** - -- 导出的json文件并非一般情况下的json,而是每行一条json数据的文本文件 -- 导出为csv时必须填写字段选项。字段之间使用英文逗号隔开。例如:`_id, name, age, gender` -- 数据量较大时可能需要等待一段时间才可以开始下载 - -## 数据导入@import - -**此功能暂时只有阿里云支持** - -uniCloud提供的`db_init.json`主要是为了对数据库进行初始化,并不适合导入大量数据。与`db_init.json`不同,数据导入功能可以导入大量数据,目前支持导入 CSV、JSON 格式的文件数据。 - -**用法** - -1. 进入[uniCloud web控制台](https://unicloud.dcloud.net.cn/home),选择服务空间,或者直接在HBuilderX云函数目录`cloudfunctions`上右键打开uniCloud web控制台 -2. 进入云数据库选择希望导入数据的集合 -3. 点击导入,选择json文件或csv文件 -4. 选择处理冲突模式(关于处理冲突模式请看下方注意事项) -5. 点击确定按钮等待导入完成即可 - -**注意** - -- 目前导入文件最大限制为50MB -- 导入csv时数据类型会丢失,即所有字段均会作为字符串导入 -- 冲突处理模式为设定记录_id冲突时的处理方式,`insert`表示冲突时依旧导入记录但是是新插入一条,`upsert`表示冲突时更新已存在的记录 +![数据库回档](https://img.cdn.aliyun.dcloud.net.cn/uni-app/uniCloud/unicloud-db-backup.jpg) + +## 数据导出@export + +**此功能暂时只有阿里云支持** + +此功能主要用于导出整个集合的数据 + +**用法** + +1. 进入[uniCloud web控制台](https://unicloud.dcloud.net.cn/home),选择服务空间,或者直接在HBuilderX云函数目录`cloudfunctions`上右键打开uniCloud web控制台 +2. 进入云数据库选择希望导入数据的集合 +3. 点击导出按钮 +4. 选择导出格式,如果选择csv格式还需要选择导出字段 +5. 点击确定按钮等待下载开始即可 + +**注意** + +- 导出的json文件并非一般情况下的json,而是每行一条json数据的文本文件 +- 导出为csv时必须填写字段选项。字段之间使用英文逗号隔开。例如:`_id, name, age, gender` +- 数据量较大时可能需要等待一段时间才可以开始下载 + +## 数据导入@import + +**此功能暂时只有阿里云支持** + +uniCloud提供的`db_init.json`主要是为了对数据库进行初始化,并不适合导入大量数据。与`db_init.json`不同,数据导入功能可以导入大量数据,目前支持导入 CSV、JSON 格式的文件数据。 + +**用法** + +1. 进入[uniCloud web控制台](https://unicloud.dcloud.net.cn/home),选择服务空间,或者直接在HBuilderX云函数目录`cloudfunctions`上右键打开uniCloud web控制台 +2. 进入云数据库选择希望导入数据的集合 +3. 点击导入,选择json文件或csv文件 +4. 选择处理冲突模式(关于处理冲突模式请看下方注意事项) +5. 点击确定按钮等待导入完成即可 + +**注意** + +- 目前导入文件最大限制为50MB +- 导入csv时数据类型会丢失,即所有字段均会作为字符串导入 +- 冲突处理模式为设定记录_id冲突时的处理方式,`insert`表示冲突时依旧导入记录但是是新插入一条,`upsert`表示冲突时更新已存在的记录 ## 获取集合的引用 @@ -275,8 +275,6 @@ exports.main = async (event, context) => { ### 地理位置 -**阿里云升级mongoDB为4.0版本后已支持地理位置** - 参考:[GEO地理位置](#GEO地理位置) ### Null @@ -479,11 +477,11 @@ collection.orderBy() | --------- | ------ | ---- | ----------------------------------- | | field | string | 是 | 排序的字段 | | orderType | string | 是 | 排序的顺序,升序(asc) 或 降序(desc) | - -如果需要对嵌套字段排序,需要用 "点表示法" 连接嵌套字段,比如 style.color 表示字段 style 里的嵌套字段 color。 - -同时也支持按多个字段排序,多次调用 orderBy 即可,多字段排序时的顺序会按照 orderBy 调用顺序先后对多个字段排序 - + +如果需要对嵌套字段排序,需要用 "点表示法" 连接嵌套字段,比如 style.color 表示字段 style 里的嵌套字段 color。 + +同时也支持按多个字段排序,多次调用 orderBy 即可,多字段排序时的顺序会按照 orderBy 调用顺序先后对多个字段排序 + 使用示例 @@ -758,13 +756,13 @@ let res = await collection.where({ _id: dbCmd.exists(true) }).remove() ``` - + 响应参数 | 字段 | 类型 | 必填 | 说明 | | --------- | ------- | ---- | ------------------------ | | deleted | Integer | 否 | 删除的记录数量 | - + ## 更新文档 @@ -2530,7 +2528,7 @@ WHERE IN (SELECT * - 组合 mergeObjects 应用相等匹配 #### 自定义连接条件、拼接子查询 - + 阿里云升级mongoDB版本为4.0后已支持此写法 如果需要指定除相等匹配之外的连接条件,或指定多个相等匹配条件,或需要拼接被连接集合的子查询结果,那可以使用如下定义: @@ -2842,7 +2840,7 @@ let res = await db.collection('orders').aggregate() - orders 的 book 字段与 books 的 title 字段相等 - books 的 stock 字段 大于或等于 orders 的 quantityorders 字段 ```js -const db = cloud.database() +const db = cloud.database() const dbCmd = db.command const $ = dbCmd.aggregate let res = await db.collection('orders').aggregate() @@ -4537,7 +4535,7 @@ let res = await db.collection('todos').doc('doc-id').update({ someField: dbCmd.rename('someObject.renamedField') } }) -``` +``` 或: @@ -4606,7 +4604,7 @@ let res = await db.collection('todos').doc('doc-id').update({ }) ``` -##### 示例 3:排序 +##### 示例 3:排序 插入后对整个数组做排序 @@ -4619,7 +4617,7 @@ let res = await db.collection('todos').doc('doc-id').update({ sort: 1, }) }) -``` +``` 不插入,只对数组做排序 @@ -4832,7 +4830,7 @@ let res = await db.collection('todos').doc('doc-id').update({ }) ``` -##### 示例代码 2:添加多个元素 +##### 示例代码 2:添加多个元素 需传入一个对象,其中有一个字段 `each`,其值为数组,每个元素就是要添加的元素 @@ -4855,7 +4853,7 @@ let res = await db.collection('todos').doc('doc-id').update({ 聚合操作符。返回一个数字的绝对值。 ##### API 说明 - + 语法如下: -- GitLab