LeanDB MongoDB 使用指南
LeanDB MongoDB 是云引擎提供的托管数据库,开发者可以在云引擎中使用 MongoDB 客户端类库连接,访问完整的 MongoDB 功能,更多其他托管数据库请查看 云引擎服务总览。
创建和管理实例
开发者可以在 开发者中心 > 你的游戏 > 游戏服务 > 云服务 > 云引擎 > 数据库 > MongoDB 页面创建和管理 LeanDB MongoDB 实例。
创建实例
点击 创建实例 可在控制台中看到一些配置项:
- 实例规格 目前提供
512M
、1GB
、2GB
、4GB
、8GB
几种,代表不同的运算能力,是计费的基础。
每种规格有固定的连接数和存储空间限制,如需要更多连接数或存储空间需要升级到更高的规格。
在调整好规格后,可以在控制台上看到当前规格的价格。
点击展开 LeanDB 计费详情
LeanDB 按天进行扣费,使用时间不足一天也按一天计费,每天扣除前一天的费用。LeanDB 基于开发者选择的实例规格进行计费,与实际用量无关(即使创建后未使用也会计费)。各规格的价格可以在创建 LeanDB 时或价格页面查看,扣费记录可在开发者中心的账单中查看。
MongoDB 版本
目前 LeanDB 仅提供 MongoDB 4.0 版本。
在线扩容
目前 LeanDB MongoDB 不提供自助扩容的能力,如需扩容请提交工单联系我们的技术支持。
管理共享
可以使用控制台上的「管理共享」功能将 LeanDB 实例共享给其他应用,被共享的应用的 LeanDB 页面可能看到这个实例,相关的环境变量也会出现在其他应用的云引擎中。
在云引擎中使用
LeanDB 所在的应用的云引擎在部署时,会被注入几个包含 MongoDB 连接信息的环境变量,包括:
MONGODB_URL_<NAME>
其中 <NAME>
是你在创建 LeanDB 时为它指定的名字,如果你的 LeanDB 名为 MYDB
的话,就会有名为 MONGODB_URL_MYDB
的环境变量。
- Node.js
- .NET (C#)
在 Node.js 中你可以这样连接到 MongoDB(假定 LeanDB 名称为 MYDB
):
const { MongoClient } = require("mongodb");
const mongoClient = new MongoClient(process.env["MONGODB_URL_MYDB"], {
useUnifiedTopology: true,
poolSize: 10,
});
mongoClient
.connect()
.then(() => {
console.log("Connected to MongoDB");
})
.catch((err) => {
console.eror("Connect to MongoDB failed", err.message);
});
app.get("/", (req, res) => {
const cats = mongoClient.collection("cats");
res.json(cats.find({}, { limit: 10 }));
});
- 你需要运行
npm install mongodb
来安装上面代码中用到的依赖 - 更多的用法请参考 MongoDB Node Driver 官方文档
在 .NET 中你可以这样连接到 MongoDB(假定 LeanDB 名称为 MYDB
):
string url = Environment.GetEnvironmentVariable("MONGODB_URL_MYDB");
MongoClient client = new MongoClient(url);
IMongoCollection<BsonDocument> collection = client.GetDatabase("leancloud")
.GetCollection<BsonDocument>("hello");
FilterDefinition<BsonDocument> filter = Builders<BsonDocument>.Filter.Empty;
Console.WriteLine(collection.Find(filter).ToList().ToJson());
管理数据
除了在云引擎中通过编程的方式访问 LeanDB,我们还提供了用于进行管理、调试或一次性数据操作的方式。
使用命令行工具连接
使用 命令行工具 CLI 提供的 tds db shell
可以打开一个连接到云端 LeanDB 的交互式 shell,用于执行查询:
$ tds db shell mysqldb
Welcome to the MySQL monitor.
Your MySQL connection id is 3450564
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> use test
Database changed
mysql> insert into users set name = 'leancloud';
Query OK, 1 row affected (0.04 sec)
mysql> select * from users;
+------+-----------+
| id | name |
+------+-----------+
| 1 | zhenzhen |
| 2 | leancloud |
+------+-----------+
2 rows in set (0.06 sec)
使用 tds db proxy
可以将云端 LeanDB 导出到本地的一个端口,供本地的程序或图形化的数据库客户端连接:
$ tds db proxy myredis
[INFO] Now, you can connect myredis via [redis-cli -h 127.0.0.1 -a hsdt9wIAuKcTZmpg -p 5678]
保持这个终端运行(不要关闭),就可以在本地的 5678 端口访问到云端的 LeanDB 了。你可以使用本地的 GUI 客户端来浏览操作云端的 LeanDB。在使用 tds up
进行开发测试时,也可以使用这个功能连接到云端的 LeanDB,设置环境变量(来自前面 tds db proxy
的输出):
export REDIS_URL_myredis=redis://default:[email protected]:5678
tds db
命令访问云端 LeanDB 实例仅用于本地开发和测试,连接会偶尔断开(部分客户端可以自动重连),请不要用于生产环境。