MongoDB یک دیتابیس NoSQL بین پلتفرم و منبع باز است که توسط بسیاری از برنامه های کاربردی وب مدرن مبتنی بر Node برای تداوم داده ها استفاده می شود.
در این آموزش برای مبتدیان، نحوه نصب Mongo را نشان میدهم، سپس شروع به استفاده از آن برای ذخیره و کوئری دادهها میکنم. من همچنین به نحوه تعامل با دیتابیس Mongo از داخل یک برنامه Node نگاه می کنم و همچنین برخی از تفاوت های بین Mongo و یک دیتابیس سنتی رابطه ای (مانند MySQL) را در طول مسیر صحبت خواهیم کرد.
MongoDB چیست؟
MongoDB یک دیتابیس داکیومنت محور(document-oriented) است. این بدان معناست که از جداول و ردیف ها برای ذخیره داده های خود استفاده نمی کند، بلکه از مجموعه هایی از داکیومنت های JSON مانند استفاده می کند. این داکیومنت ها از فیلدهای تعبیه شده پشتیبانی می کنند، بنابراین داده های مرتبط را می توان در آنها ذخیره کرد.
MongoDB همچنین یک دیتابیس بدون Schema است، بنابراین ما نیازی به تعیین تعداد یا نوع ستون ها قبل از درج داده های خود نداریم.
در اینجا مثالی از شکل ظاهری یک داکیومنت MongoDB آورده شده است:
{
_id: ObjectId(3da252d3902a),
type: "Tutorial",
title: "بررسی دیتابیس MongoDB و راهنمایی استفاده",
author: "Manjunath M",
tags: [ "mongodb", "compass", "crud" ],
categories: [
{
name: "javascript",
description: "Tutorialss on client-side and server-side JavaScript programming"
},
{
name: "databases",
description: "Tutorialss on different kinds of databases and their management"
},
],
content: "MongoDB is a cross-platform, open-source, NoSQL database..."
}
همانطور که می بینید، داکیومنت دارای تعدادی فیلد (نوع، عنوان و غیره) است که مقادیر ("Tutorial"، "بررسی دیتابیس MongoDB و راهنمایی استفاده" و غیره) را ذخیره می کند.
این مقادیر میتوانند شامل رشتهها، اعداد، آرایهها، آرایههایی از داکیومنت های فرعی (مثلاً categories
)، مختصات جغرافیایی و موارد دیگر باشند.
نام فیلد id_
برای استفاده به عنوان کلید اصلی رزرو شده است. مقدار آن باید در مجموعه منحصر به فرد باشد، تغییرناپذیر است و ممکن است از هر نوع دیگری غیر از آرایه باشد.
نکته: برای کسانی که نمیدانند «JSON-like» به چه معناست، Mongo در داخل از چیزی به نام BSON (مخفف JSON باینری) استفاده میکند. در عمل، هنگام کار با MongoDB، واقعاً نیازی به دانستن چیزهای زیادی در مورد BSON ندارید.
همانطور که ممکن است حدس بزنید، یک داکیومنت در دیتابیس NoSQL با یک ردیف در دیتابیس SQL مطابقت دارد. گروهی از داکیومنت ها با هم به عنوان یک مجموعه شناخته می شوند که تقریباً مترادف با یک جدول در یک دیتابیس رابطه ای است.
در اینجا جدولی است که اصطلاحات مختلف را خلاصه می کند:
SQL Server | MongoDB |
Database | Database |
Table | Collection |
Row | Document |
Column | Field |
Index | Index |
نصب MongoDB
توجه: اگر می خواهید این آموزش را بدون نصب نرم افزار روی سیستم شخصی خود دنبال کنید، چند سرویس آنلاین وجود دارد که می توانید از آنها استفاده کنید. به عنوان مثال، زمین بازی Mongo، یک داکیومنت باکس ساده برای آزمایش و اشتراکگذاری پرسشهای MongoDB به صورت آنلاین است.
MongoDB در نسخه های مختلف عرضه می شود. موردی که ما به آن علاقه مندیم نسخه انجمن MongoDB (MongoDB Community Edition) است.
صفحه اصلی پروژه دارای مستندات عالی در مورد نصب Mongo است و من سعی نمی کنم آن را در اینجا تکرار کنم. در عوض، من به شما لینک هایی به دستورالعمل های هر یک از سیستم عامل های اصلی ارائه می دهم:
MongoDB Community Edition را روی ویندوز نصب کنید
MongoDB Community Edition را روی macOS نصب کنید
MongoDB Community Edition را روی اوبونتو نصب کنید
اگر از نسخه غیر مبتنی بر اوبونتو لینوکس استفاده میکنید، میتوانید این صفحه را برای دستورالعملهای نصب برای سایر توزیعها بررسی کنید. MongoDB نیز معمولاً از طریق کانالهای نرمافزار رسمی لینوکس در دسترس است، اما گاهی اوقات این نسخه قدیمی میشود.
پیکربندی پس از نصب
هنگامی که MongoDB را برای سیستم خود نصب کردید، ممکن است با این خطا مواجه شوید:
dbpath (/data/db) does not exist.
Create this directory or give existing directory in --dbpath.
See http://dochub.mongodb.org/core/startingandstoppingmongo
این بدان معنی است که Mongo نمی تواند دایرکتوری را که برای ذخیره دیتابیس خود استفاده می کند پیدا کند (یا به آن دسترسی پیدا کند). رفع این مشکل بسیار آسان است:
sudo mkdir -p /data/db
sudo chown -R `id -un` /data/db
اولین فرمان دایرکتوری data/db
را ایجاد می کند. دومی مجوزها را تنظیم می کند تا Mongo بتواند در آن دایرکتوری بنویسد.
رابط گرافیکی Compass را نصب کنید
ما از خط فرمان(cmd) در این آموزش استفاده خواهیم کرد، اما MongoDB همچنین ابزاری به نام Compass را برای اتصال و مدیریت دیتابیس های شما با استفاده از رابط کاربری گرافیکی ارائه می دهد
.
اگر در ویندوز هستید، Compass را می توان به عنوان بخشی از نصب اصلی Mongo نصب کرد (فقط گزینه مناسب را از wizard انتخاب کنید). در غیر این صورت، می توانید Compass را برای سیستم عامل مربوطه خود از اینجا دانلود کنید.
Shell مونگو
ما می توانیم نصب خود را با باز کردن Shell Mongo آزمایش کنیم. می توانید این کار را با باز کردن یک پنجره ترمینال و تایپ mongo انجام دهید.
توجه: فرض بر این است که mongodb install dir>/bin>
در مسیر شما قرار دارد. اگر به هر دلیلی اینطور نیست، به دایرکتوری mongodb install dir>/bin>
تغییر دهید و دستور را دوباره اجرا کنید.
اگر خطای Error: can't connect to server
را دریافت کردید، باید سرور Mongo را (در پنجره ترمینال دوم) با دستور mongod راه اندازی کنید.
هنگامی که در Shell Mongo قرار گرفتید، ()db.version
را تایپ کنید تا نسخه MongoDB را که در حال اجرا هستید ببینید. در زمان نوشتن، این باید خروجی 4.2.2 باشد.
لطفاً توجه داشته باشید که میتوانید با اجرای ()quit
از Shell Mongo و با فشردن کلیدهای Ctrl + C
هر زمان که بخواهید از دیمون Mongo خارج شوید.
اکنون بیایید با برخی از اصول MongoDB آشنا شویم.
عملیات پایه دیتابیس
اگر قبلاً این کار را نکرده اید، Shell Mongo را وارد کنید (با تایپ mongo در ترمینال):
[mj@localhost ~]$ mongo
MongoDB shell version v4.2.2
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("08a624a0-b330-4233-b56b-1d5b15a48fea") }
MongoDB server version: 4.2.2
بیایید با ایجاد یک دیتابیس برای کار با آن شروع کنیم. برای ایجاد یک دیتابیس، MongoDB یک دستور استفاده از DATABASE_NAME
را دارد:
> use exampledb
switched to db exampledb
برای نمایش تمام دیتابیس های موجود، Show dbs
را امتحان کنید:
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
exampledb
در لیست نیست زیرا ما باید حداقل یک داکیومنت را در دیتابیس وارد کنیم. برای درج یک داکیومنت، می توانید از db.COLLECTION_NAME.insertOne({"key":"value"})
استفاده کنید. در اینجا یک مثال:
> db.users.insertOne({name: "Bob"})
{
"acknowledged" : true,
"insertedId" : ObjectId("5a52c53b223039ee9c2daaec")
}
MongoDB به طور خودکار یک مجموعه ای از users جدید ایجاد می کند و یک داکیومنت با جفت کلید-مقدار 'name':'Bob'
درج می کند. ObjectId
برگردانده شده ID داکیومنت درج شده است. MongoDB برای هر داکیومنت در هنگام ایجاد یک ObjectId
منحصر به فرد ایجاد می کند و به مقدار پیش فرض فیلد id_
تبدیل می شود.
اکنون باید بتوانیم دیتابیس خود را ببینیم:
>show dbs
admin 0.000GB
config 0.000GB
exampledb 0.000GB
local 0.000GB
به طور مشابه، می توانید تأیید کنید که مجموعه با استفاده از دستور show collections
ایجاد شده است:
> show collections
users
ما یک دیتابیس ایجاد کرده ایم، مجموعه ای به نام users
اضافه کرده و یک داکیومنت را در آن درج کرده ایم. حالا بیایید سعی کنیم آن را drop کنیم. برای دراپ کردن یک دیتابیس موجود، از دستور ()dropDatabase
استفاده کنید، به عنوان مثال در زیر:
>db.dropDatabase()
{ "dropped" : "exampledb", "ok" : 1 }
show dbs
تأیید می کند که دیتابیس واقعاً حذف شده است:
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
برای عملیات بیشتر دیتابیس، لطفاً به صفحه مرجع MongoDB در دستورات دیتابیس مراجعه کنید.
مدیریت کاربر
احتمالاً تا به حال متوجه شده اید که MongoDB با هیچ نوع کنترل دسترسی فعال نیست.
در حالی که عدم ارائه نام کاربری و رمز عبور برای توسعه خوب است، این چیزی است که باید هنگام استفاده از Mongo در تولید تغییر دهید.
در اینجا مراحل ایجاد یک کاربر دیتابیس با امتیاز کامل خواندن/نوشتن آمده است:
مطمئن شوید که سرور Mongo را بدون هیچ گونه کنترل دسترسی راه اندازی کرده اید (معمولاً با تایپ mongod).
یک Shell را با تایپ mongo باز کنید.
از Shell، یک کاربر با نقش readWrite
به دیتابیس exampledb
اضافه کنید. این از شما می خواهد که رمز عبور را وارد کنید. بدیهی است که "anophel" را با نام کاربری مورد نظر خود جایگزین کنید:
js
use exampledb
db.createUser(
{
user: "anophel",
pwd: passwordPrompt(),
roles: [ { role: "readWrite" ]
}
)
از Shell مونگو خارج شوید.
سرور Mongo را خاموش کنید، سپس با استفاده از mongod --auth
آن را راه اندازی مجدد کنید. کلاینت هایی که به این نمونه متصل می شوند اکنون باید خود را احراز هویت کنند.
یک Shell مانند این را دوباره باز کنید: mongo --authenticationDatabase "exampledb" -u "manjunath" -p
. اکنون از شما خواسته می شود رمز عبور خود را وارد کنید.
برای اطلاعات بیشتر، لطفاً به داکیومنت ها پروژه در مورد فعال کردن کنترل دسترسی مراجعه کنید.
عملیات MongoDB CRUD
همانطور که قبلاً می دانید، مخفف CRUD مخفف ایجاد، خواندن، به روز رسانی و حذف است. اینها چهار عملیات اساسی دیتابیس هستند که هنگام ساختن یک برنامه نمی توانید از آنها اجتناب کنید. به عنوان مثال، هر برنامه مدرن توانایی ایجاد یک کاربر جدید، خواندن اطلاعات کاربر، به روز رسانی اطلاعات کاربر و در صورت نیاز، حذف حساب کاربری را خواهد داشت. بیایید این کار را در سطح دیتابیس با استفاده از MongoDB انجام دهیم.
عملیات ایجاد کردن
ایجاد مانند درج یک داکیومنت در یک مجموعه است. در بخش قبل، یک داکیومنت واحد را با استفاده از سینتکس ()db.collection.insertOne
درج کردیم. روش دیگری به نام ()db.collection.insertMany
وجود دارد که به شما امکان می دهد چندین داکیومنت را همزمان وارد کنید. در اینجا سینتکسش این است:
> db.collection.insertMany([ <document 1> , <document 2>, ... ])
بیایید یک مجموعه users ایجاد کنیم و آن را با چند کاربر واقعی پر کنیم:
> use exampledb
> db.users.insertMany([
{ name: "Tom",age:15, email: "tom@example.com" },
{ name: "Bob", age:35, email:"bob@example.com" },
{ name: "Kate", age: 27, email: "kate@example.com" },
{ name: "Katherine", age:65, email:"katherine@example.com"}
])
{
"acknowledged" : true,
"insertedIds" : [
ObjectId("5e25bb58ba0cf16476aa56ff"),
ObjectId("5e25bb58ba0cf16476aa5700"),
ObjectId("5e25bb58ba0cf16476aa5701"),
ObjectId("5e25bb58ba0cf16476aa5702")
]
}
متد insertMany
آرایه ای از اشیاء را می پذیرد و در عوض، آرایه ای از ObjectIds
را دریافت می کنیم.
عملیات خواندن
عملیات خواندن برای بازیابی یک داکیومنت یا چندین داکیومنت از یک مجموعه استفاده می شود. سینتکس عملیات خواندن به شرح زیر است:
> db.collection.find(query, projection)
برای بازیابی تمام داکیومنت ها کاربر، می توانید این کار را انجام دهید:
> db.users.find().pretty()
{
"_id" : ObjectId("5e25bb58ba0cf16476aa56ff"),
"name" : "Tom",
"age" : 15,
"email" : "tom@example.com"
}
{
"_id" : ObjectId("5e25bb58ba0cf16476aa5700"),
"name" : "Bob",
"age" : 35,
"email" : "bob@example.com"
}
{
"_id" : ObjectId("5e25bb58ba0cf16476aa5701"),
"name" : "Kate",
"age" : 27,
"email" : "kate@example.com"
}
{
"_id" : ObjectId("5e25bb58ba0cf16476aa5702"),
"name" : "Katherine",
"age" : 65,
"email" : "katherine@example.com"
}
این مربوط به کوئری SELECT * FROM USERS
برای دیتابیس SQL است.
روش زیبا یک متد مکان نما است و روش های بسیار دیگری نیز وجود دارد. میتوانید این روشها را برای اصلاح درخواست خود و داکیومنت های که توسط کوئری بازگردانده میشوند، زنجیره بزنید.
شاید برای برگرداندن زیرمجموعه ای از مجموعه، نیاز به فیلتر کردن کوئریها داشته باشید - مانند یافتن همه users زیر 30. می توانید کوئری را به این صورت تغییر دهید:
> db.users.find({ age: { $lt: 30 } })
{ "_id" : ObjectId("5e25bb58ba0cf16476aa56ff"), "name" : "Tom", "age" : 15, "email" : "tom@example.com" }
{ "_id" : ObjectId("5e25bb58ba0cf16476aa5701"), "name" : "Kate", "age" : 27, "email" : "kate@example.com" }
در این مثال، lt$
یک عملگر فیلتر کوئری است که داکیومنت های را انتخاب می کند که مقدار فیلد سن آنها کمتر از 30 باشد. فیلترهای مقایسه ای و منطقی زیادی در دسترس هستند. شما می توانید کل لیست را در مستندات انتخابگر کوئری ببینید.
توجه: در Mongo، میتوانید کوئریی SQL را با استفاده از regex تکرار کنید. برای مثال، 'SELECT * FROM users WHERE name LIKE %'Kat
به db.users.find ({ name: /Kat.*/ })
ترجمه می شود.
عملیات به روز رسانی
عملیات به روز رسانی داکیومنت ها موجود در یک مجموعه را تغییر می دهد. مشابه عملیات ایجاد، MongoDB روش های مختلفی را برای به روز رسانی یک داکیومنت ارائه می دهد. مثلا:
db.collection.updateOne(<filter>، <update>، <options>)
db.collection.updateMany(<filter>، <update>، <options>)
.
اگر نیاز دارید یک فیلد اضافی - مثلاً ثبت نام - به تمام داکیومنت ها موجود در یک مجموعه اضافه کنید، میتوانید کاری شبیه به این انجام دهید:
> db.users.updateMany({}, {$set: { registration: "incomplete"}})
{ "acknowledged" : true, "matchedCount" : 4, "modifiedCount" : 4 }
آرگومان اول یک شی خالی است زیرا می خواهیم تمام داکیومنت ها موجود در مجموعه را به روز کنیم. set$
یک عملگر به روز رسانی است که مقدار یک فیلد را با مقدار مشخص شده تعیین می کند. می توانید بررسی کنید که فیلد اضافی با استفاده از ()db.users.find
اضافه شده است.
برای به روز رسانی مقدار داکیومنت های که با معیارهای خاصی مطابقت دارند، ()updateMany
یک شی فیلتر را به عنوان اولین آرگومان خود می پذیرد. به عنوان مثال، ممکن است بخواهید مقدار registration
را برای همه users بالای 18 سال بازنویسی کنید. این چیزی است که می توانید انجام دهید:
> db.users.updateMany(
{age:{ $gt: 18} },
{$set: { registration: "complete"}
})
{ "acknowledged" : true, "matchedCount" : 3, "modifiedCount" : 3 }
برای به روز رسانی جزئیات ثبت نام یک کاربر، می توانید این کار را انجام دهید:
> db.users.updateOne(
{email: "tom@example.com" },
{$set: { registration: "complete"}
})
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
عملیات حذف
عملیات حذف یک داکیومنت را از مجموعه حذف می کند. برای حذف یک داکیومنت می توانید از متد db.collection.deleteOne(<filter>, <options>)
و برای حذف چندین داکیومنت می توانید از متد db.collection.deleteMany(<filter>, <options>)
استفاده کنید. .
برای حذف داکیومنت ها بر اساس معیارهای خاص، می توانید از عملگرهای فیلتری که برای عملیات خواندن و به روز رسانی استفاده کردیم استفاده کنید:
> db.users.updateOne(
{email: "tom@example.com" },
{$set: { status: "dormant"}
})
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
> db.users.deleteMany( { status: { $in: [ "dormant", "inactive" ] } } )
{ "acknowledged" : true, "deletedCount" : 1 }
این همه داکیومنت ها با وضعیت "dormant" یا "غیر فعال" را حذف می کند.
اعتبار سنجی Schema
قبلاً در این آموزش، وقتی گفتم Mongo یک دیتابیس بدون Schema است، تا حدودی سادهسازی کردم.
تا آنجایی که نیازی به تعیین تعداد یا نوع ستونها قبل از درج دادههای خود نداریم، Schemaای ندارد. با این حال، میتوان طرحی JSON را تعریف کرد و از آن برای اجرای قوانین اعتبارسنجی برای دادههایمان استفاده کرد.
بیایید یک مجموعه validatedUsers
ایجاد کنیم، که در آن میتوانیم از ساختار اعتبارسنجی استفاده کنیم تا مشخص کنیم یک نام اجباری است و یک فیلد ایمیل با الگوی خاصی مطابقت دارد:
> db.createCollection("validatedUsers", {
validator: {
$jsonSchema: {
required: [ "name", "email" ],
properties: {
name: {
bsonType: "string",
description: "must be a string and is required"
},
email: {
bsonType: "string",
pattern: "^.+\@.+$",
description: "must be a valid email and is required"
}
}
}
}
})
{ "ok" : 1 }
حال اگر بخواهیم داده های نادرستی وارد کنیم، یک خطای اعتبار سنجی دریافت می کنیم:
> db.validatedUsers.insertOne({ name: "Jim", email: "not-an-email" })
2020-01-22T09:56:56.918+0100 E QUERY [js] uncaught exception: WriteError({
"index" : 0,
"code" : 121,
"errmsg" : "Document failed validation",
"op" : {
"_id" : ObjectId("5e280e5847eb18010666530c"),
"name" : "Jim",
"email" : "not-an-email"
}
}) :
WriteError({
"index" : 0,
"code" : 121,
"errmsg" : "Document failed validation",
"op" : {
"_id" : ObjectId("5e280e5847eb18010666530c"),
"name" : "Jim",
"email" : "not-an-email"
}
})
WriteError@src/mongo/shell/bulk_api.js:458:48
mergeBatchResults@src/mongo/shell/bulk_api.js:855:49
executeBatch@src/mongo/shell/bulk_api.js:919:13
Bulk/this.execute@src/mongo/shell/bulk_api.js:1163:21
DBCollection.prototype.insertOne@src/mongo/shell/crud_api.js:264:9
@(shell):1:1
می توانید اطلاعات بیشتری در مورد اعتبار سنجی Schema در مستندات پروژه بخوانید.
مروری بر درایورهای MongoDB
برای اینکه یک برنامه با سرور MongoDB ارتباط برقرار کند، باید از کتابخانه سمت کلاینت به نام درایور استفاده کنید. درایور در بالای سرور دیتابیس قرار می گیرد و به شما امکان می دهد با استفاده از API درایور با دیتابیس تعامل داشته باشید. MongoDB دارای درایورهای رسمی و شخص ثالث برای همه زبان ها و محیط های محبوب است.
محبوب ترین درایورهای Node.js شامل درایور اصلی MongoDB و Mongoose است. من در اینجا به اختصار به هر دوی اینها می پردازم.
درایور MongoDB Node.js
این درایور رسمی MongoDB برای Node.js است. درایور میتواند با استفاده از کالبک ها ، پرومیس ها یا async … await با دیتابیس تعامل داشته باشد.
شما می توانید آن را به این صورت نصب کنید:
npm install mongod
مثال زیر نحوه اتصال درایور به سرور را نشان می دهد و تمام داکیومنت ها موجود در مجموعه users را فهرست می کند.
توجه: اگر با استفاده از نام و رمز عبور به سرور Mongo متصل شده اید، باید این جزئیات را در کد خود مشخص کنید.
نام و رمز عبور
اگر با استفاده از نام و رمز عبور به سرور Mongo متصل شده اید، باید این جزئیات را در کد خود مشخص کنید.
const MongoClient = require('mongodb').MongoClient;
const url = 'mongodb://localhost:27017/exampledb';
// With authentication:
// const url = 'mongodb://<userName>:<passWord>@localhost:27017/exampledb';
// Further reading: https://docs.mongodb.com/manual/reference/connection-string/
(async () => {
let client;
try {
client = await MongoClient.connect(url, {
useNewUrlParser: true,
useUnifiedTopology: true
});
const db = client.db('exampledb');
const collection = db.collection('users');
const users = await collection.find().toArray();
console.log(users);
} catch (err) {
console.log(err.stack);
}
if (client) {
client.close();
}
})();
MongoClient.connect
یک پرومیس را برمی گرداند. هر خطایی توسط بلوک catch
شناسایی می شود و هر اقدام دیتابیس در داخل بلوک try
قرار می گیرد. اگر به مستندات درایور Mongo نگاه کنید، خواهید دید که API بسیار شبیه به چیزی است که ما در Shell استفاده می کردیم.
درایور مونگوس
یکی دیگر از درایورهای محبوب Node.js برای MongoDB، Mongoose است. Mongoose بر روی درایور رسمی MongoDB ساخته شده است. زمانی که Mongoose منتشر شد، دارای چندین ویژگی بود که درایور بومی MongoDB از آن بی بهره بود. یکی از ویژگی های برجسته، توانایی تعریف ساختار Schema ای بود که بر روی مجموعه دیتابیس نگاشت می شد. با این حال، آخرین نسخههای MongoDB برخی از این ویژگیها را در قالب Schema JSON و اعتبارسنجی طرحواره به کار گرفتهاند.
به غیر از Schema، سایر ویژگی های فانتزی Mongoose شامل Model، اعتبارسنجی ها و میدلور ها، متد پر کردن، افزونه ها و غیره است. می توانید در داکیومنت ها Mongoose اطلاعات بیشتری در مورد این موارد بخوانید.
شما می توانید Mongoose را مانند این نصب کنید:
npm install mongoose
در اینجا معادل Mongoose مثال قبلی است:
const mongoose = require('mongoose');
async function run() {
await mongoose.connect('mongodb://localhost:27017/exampledb', {
useNewUrlParser: true,
useUnifiedTopology: true
});
const userSchema = new mongoose.Schema({ name: String, age: String, email: String });
const User = mongoose.model('User', userSchema);
const users = await User.find();
console.log(users);
mongoose.connection.close();
}
run().catch(error => console.log(error.stack));
در Mongoose، همه چیز با یک Schema شروع می شود. هر طرحی به یک مجموعه MongoDB نگاشت می شود و شکل داکیومنت ها را در آن مجموعه تعریف می کند.
نتیجه
MongoDB یک راه حل محبوب دیتابیس NoSQL است که با نیازهای توسعه مدرن مطابقت دارد. در این آموزش، ما اصول MongoDB، Shell Mongo و برخی از درایورهای محبوب موجود را پوشش داده ایم. ما همچنین عملیات مشترک دیتابیس و اقدامات CRUD در Shell Mongo را بررسی کرده ایم. اکنون زمان آن فرا رسیده است که به بیرون بروید و آنچه را که در اینجا پوشش داده ایم و موارد دیگر را امتحان کنید. اگر می خواهید بیشتر بیاموزید، توصیه می کنم یک REST API با MongoDB و Node ایجاد کنید تا با عملیات و روش های رایج دیتابیس آشنا شوید.