دادهی سندمحور، بدون مدیریت کلاستر
MongoDB برای دادهای مناسب است که ساختارش با محصول تغییر میکند: پروفایل کاربر، کاتالوگ محصول، لاگ رویداد. اسناد JSON مانند ذخیره و با ایندکس و aggregation جستوجو میشوند.
در حالت Replica Set، تراکنشهای چندسندی و Change Stream در دسترساند. رشتهی اتصال تزریقشده همهچیز را دارد، از جمله replicaSet؛ کد شما فقط آن را میخواند.
مناسب برای
- کاتالوگ محصول و محتوای پویا
- پروفایل و تنظیمات کاربر
- لاگ رویداد و دادهی زمانی
- بکاند اپ موبایل
از ساخت تا اتصال
ساخت
نسخه را انتخاب کنید؛ برای تراکنش Replica Set را فعال کنید.
--type mongo --replica-setلینک به اپ
رشتهی اتصال کامل با پیشوند MONGO تزریق میشود.
--prefix MONGOاستفاده
درایور فقط
MONGO_URLرا میخواند.MONGO_URL
خروجی ساخت سرویس
sakoocloud db create --name docs-db --type mongo --version 8 ✔ Provisioning docs-db · db_4n8x2p ℹ Ready in ~90s. Get credentials: sakoocloud db credentials db_4n8x2p sakoocloud apps link-db db_4n8x2p --app my-api --prefix MONGO ✔ Linked database. Env vars injected under MONGO_*. # MONGO_URL=mongodb://app:••••@…:27017/docs-db
ساخت دیتابیس
تکنود برای شروع کافی است؛ Replica Set برای تراکنش و Change Stream.
sakoocloud db create --name docs-db --type mongo
sakoocloud db create --name events --type mongo --replica-set
تنظیمات
متغیرهایی که به اپ تزریق میشوند
پیشوند پیشفرض DATABASE است؛ با --prefix میتوانید نام دیگری بدهید، مثلاً MONGO.
| متغیر | مقدار |
|---|---|
MONGO_URL | رشتهی کامل، شامل replicaSet در صورت فعال بودن |
MONGO_HOST و MONGO_PORT | آدرس و پورت داخلی |
MONGO_USER و MONGO_PASSWORD | نام کاربری و رمز تولیدشده |
پشتیبانگیری
پشتیبانها بهصورت dump منطقی گرفته و جدا از دیسک دیتابیس، روی فضای ذخیرهسازی سازگار با S3 نگهداری میشوند.
| نوع | در دسترس |
|---|---|
| پشتیبان دستی | همهی پلنها، از جمله پلن رایگان |
| زمانبندی خودکار | پلنهای پولی |
| بازگردانی | روی همان دیتابیس یا یک نمونهی تازه (backups clone) |
اتصال از اپ
رشتهی اتصال را مستقیم به درایور بدهید.
import { MongoClient } from "mongodb";
const client = new MongoClient(process.env.MONGO_URL);
await client.connect();
import os
from pymongo import MongoClient
client = MongoClient(os.environ["MONGO_URL"])
import mongoose from "mongoose";
await mongoose.connect(process.env.MONGO_URL);
خطاهای رایج
از سیستم خودم وصل نمیشوم
علتآدرس داخلی فقط از اپهای همان پروژه در دسترس است.
راهحلبرای اتصال از بیرون، دسترسی عمومی را روشن کنید و آدرس و پورت خارجی را از sakoocloud db credentials بگیرید.
sakoocloud db public-access <db-id>
sakoocloud db credentials <db-id>
Transaction numbers are only allowed on a replica set
علتدیتابیس در حالت تکنود ساخته شده است.
راهحلیک دیتابیس با --replica-set بسازید و داده را منتقل کنید.
Authentication failed
علتauthSource یا رمز دستی وارد شده و با رشتهی اتصال تزریقشده فرق دارد.
راهحلفقط از MONGO_URL استفاده کنید.
پرسشهای متداول
Replica Set را کی لازم دارم؟
برای تراکنشهای چندسندی و Change Stream. برای استفادهی معمولی، تکنود کافی است.
از MongoDB Atlas مهاجرت کنم؟
با mongodump از Atlas خروجی بگیرید و با mongorestore در دیتابیس جدید بازگردانی کنید.
Compass یا mongosh وصل میشود؟
بله؛ sakoocloud db connect برای mongosh و دسترسی عمومی برای Compass.
جزئیات بیشتر در راهنمای MongoDB در مستندات و مرجع CLI.