

简体中文
扩展数据库作为uniCloud的一个扩展库,使用时需要在云函数或者云数据库中启用。
注意
欢迎进入扩展数据库技术交流群
打开云函数根目录的 package.json
文件,添加以下配置
设置为Nodejs18
"cloudfunction-config": {
...你的其他配置
"runtime": "Nodejs18",
}
设置为Nodejs16
"cloudfunction-config": {
...你的其他配置
"runtime": "Nodejs16",
}
在云函数或云对象中使用扩展数据库,需要进行如下操作:
云函数/云对象
上右键,并点击 - 管理公共模块或扩展库依赖uni-cloud-ext-database
扩展库如果你还使用了clinetDB或JQL,还需要进行如下操作:
uniCloud/database
目录右键,并点击 - 配置Shema扩展JS的公共模块或扩展库uni-cloud-ext-database
扩展库uniCloud/database
目录右键,并点击 - 上传Schema扩展Js的配置扩展数据库已包含内置数据库拥有的所有API,并且还拥有以下特殊API
注意:需要先在扩展数据库控制台授权空间后,此空间才能使用
// 返回的db对象就是连接指定数据库实例的db对象
const db = uniCloud.database({
id: "数据库实例ID"
});
// 返回的db对象就是连接指定库名的db对象
const db = uniCloud.database({
database: "数据库实例下的数据库名称"
});
// 返回的db对象就是连接指定数据库实例且指定了库名的db对象
const db = uniCloud.database({
id: "数据库实例ID",
database: "数据库实例下的数据库名称"
});
API
uniCloud.databaseForNative(options: Options): Promise<Db>
Options
参数名 | 类型 | 必填 | 默认值 | 说明 |
---|---|---|---|---|
id | string | 否 | - | 数据库实例id |
database | string | 否 | - | 数据库名称 |
Db
Db 实例是 MongoDB 的数据库对象,提供了对数据库的操作方法。 详细的 API 参考 MongoDB Db Class
示例
// 获取默认数据库实例
const dbNative = await uniCloud.databaseForNative();
// 切换数据库
const dbNative = await uniCloud.databaseForNative({
database: "数据库名称",
});
在首次向不存在的集合中插入数据时,MongoDB 会隐式创建集合。如果要显式创建集合,可以使用 createCollection
方法。
API
db.createCollection(name: string, options?: CreateCollectionOptions): Promise<Collection>
name
集合名称
CreateCollectionOptions
Collection
示例
const dbNative = await uniCloud.databaseForNative();
// 创建名为 book 的集合
await dbNative.createCollection('book');
API
db.listCollections(filter?: Document, options?: ListCollectionsOptions): ListCollectionsCursor
Document
ListCollectionsOptions
ListCollectionsCursor
ListCollectionsCursor
是一个游标对象,用于遍历集合列表。它提供了多种方法来处理查询结果,例如 toArray()
、forEach()
等。
toArray()
:将游标中的所有文档转换为数组。for await...of
循环来遍历游标中的文档。关于异步迭代器参考AsyncIterator其他方法和属性可以参考 ListCollectionsCursor
示例
const dbNative = await uniCloud.databaseForNative();
// 获取集合列表 (toArray)
const collections = await dbNative.listCollections().toArray();
console.log(collections);
// 获取集合列表 (异步迭代)
const collections = dbNative.listCollections();
for await (const collection of collections) {
console.log(collection);
}
// 仅查询集合名称
const onlyNameCollections = await dbNative.listCollections({}, { nameOnly: true }).toArray();
console.log(onlyNameCollections);
API
collection.createIndex(indexSpec: IndexSpecification, options?: CreateIndexesOptions): Promise<string>
IndexSpecification
IndexSpecification
是一个对象,定义了索引的字段和排序方式。它的键是要索引的字段名,值是排序方式(1 表示升序,-1 表示降序,2dsphere 表示地理空间索引,2d 表示二维索引等)。
CreateIndexesOptions
示例
const dbNative = await uniCloud.databaseForNative();
const collection = dbNative.collection('book');
// 创建索引(单字段索引)
await collection.createIndex({ title: 1 });
// 自定义索引名称
await collection.createIndex({ title: 1 }, { name: 'title_index' });
// 创建唯一索引
await collection.createIndex({ title: 1 }, { unique: true });
// 创建地理空间索引
await collection.createIndex({ location: '2dsphere' });
// 后台创建索引
await collection.createIndex({ title: 1 }, { background: true });
// 创建索引(复合索引)
await collection.createIndex({ title: 1, author: -1 });
API
collection.listIndexes(options?: ListIndexesOptions): ListIndexesCursor
ListIndexesOptions
ListIndexesCursor
示例
const dbNative = await uniCloud.databaseForNative();
const collection = dbNative.collection('book');
// 获取索引列表 (toArray)
const indexes = await collection.listIndexes().toArray();
console.log(indexes);
API collection.dropIndex(indexName: string, options?: CommandOperationOptions): Promise<Document>
CommandOperationOptions
示例
const dbNative = await uniCloud.databaseForNative();
const collection = dbNative.collection('book');
// 删除索引
await collection.dropIndex('title_index');
注意
API
collection.dropIndexes(options?: CommandOperationOptions): Promise<boolean>
CommandOperationOptions
示例
const dbNative = await uniCloud.databaseForNative();
const collection = dbNative.collection('book');
// 删除所有索引
await collection.dropIndexes();
注意
进入uniCloud控制台,进入扩展数据库首页
选择对应的数据库,进入详情后,再点击左侧菜单-空间授权管理
在弹窗中输入对应的信息,如下图所示
进入扩展数据库详情页,点击左侧菜单-性能监控
进入扩展数据库详情页,点击左侧菜单-慢日志查询
注意:扩展数据库没有慢日志限流,此处显示慢日志是为了方便你优化数据库代码,提升系统响应速度
进入扩展数据库详情页,点击左侧菜单-参数设置
进入扩展数据库详情页,点击左侧菜单-IP白名单设置
进入扩展数据库详情页,点击左侧菜单-成员管理,如下图所示
可以添加以下几种角色的成员
角色 | 权限说明 |
---|---|
普通成员 | 实例详情、性能监控、慢日志查询、参数查看、备份查看 |
管理员 | 除成员管理外的功能 |
超级管理员 | 所有功能 |
注意:变配和续费仅主账号才能操作。
不需要修改,只需要关联扩展数据库的扩展库,并重新上传云函数和JQL的JS扩展即可,详情见在项目中启用扩展数据库
特别注意: 只有阿里云、腾讯云空间的内置数据库可按下方步骤导出导入数据,如果是支付宝云空间,请进入扩展数据库技术交流群协助迁移数据
进入内置数据库控制台,选择表,点导出,然后使用扩展数据库的数据库可视化管理工具,将导出的json文件导入即可,具体操作如下:
打开 MongoDB Compass
数据库可视化管理工具,选择对应的库,再选择对应的表,没有表就新建表,关于 MongoDB Compass
的操作帮助请点击查看
选择对应的表后,再按下图所示导入第1步导出的JSON文件即可。