تعد MongoDB واحدة من قواعد بيانات NoSQL الأكثر شيوعًا، ويستخدمها المطورون على نطاق واسع لإنشاء تطبيقات مرنة وقابلة للتطوير. جنبًا إلى جنب مع Node.js، وهو نظام أساسي معتمد على نطاق واسع لتطوير الواجهة الخلفية، يمكنك إنشاء واجهات برمجة تطبيقات فعالة وتطبيقات قوية. في منشور المدونة هذا، سنستكشف كيفية تكوين MongoDB مع Node.js، بدءًا من التثبيت وحتى إجراء عمليات CRUD الأساسية (الإنشاء والقراءة والتحديث والحذف).
MongoDB هي قاعدة بيانات NoSQL موجهة نحو المستندات. بدلاً من تخزين البيانات في الجداول، كما هو الحال في قواعد البيانات العلائقية، يقوم MongoDB بتخزين المستندات بتنسيق JSON، والذي يسمى BSON (Binary JSON). وهذا يوفر المرونة في نمذجة البيانات ويسهل قابلية التوسع الأفقي.
أولاً، تحتاج إلى تثبيت MongoDB. اعتمادًا على نظام التشغيل الخاص بك، اتبع التعليمات الموجودة على الموقع الرسمي لتثبيت MongoDB.
قم بإنشاء دليل جديد لمشروعك وابدأ مشروع Node.js:
mkdir mongo-node-app cd mongo-node-app npm init -y
الخطوة التالية هي تثبيت برنامج تشغيل MongoDB الرسمي لـ Node.js:
npm install mongodb
الآن، قم بإنشاء ملف Index.js لتكوين الاتصال بـ MongoDB. سوف نستخدم MongoClient للاتصال بقاعدة البيانات.
const { MongoClient } = require('mongodb'); async function connectDB() { const uri = "mongodb://localhost:27017"; // URL do MongoDB local const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true }); try { await client.connect(); console.log("Conectado ao MongoDB"); const db = client.db("mydatabase"); return db; } catch (err) { console.error("Erro ao conectar ao MongoDB", err); } finally { // Fechar a conexão await client.close(); } } connectDB();
لإضافة مستندات إلى المجموعة، يمكننا استخدام طريقة InsertOne() أو InsertMany().
async function createDocument(db) { const collection = db.collection("users"); const newUser = { name: "Lucas", age: 25, email: "[email protected]" }; const result = await collection.insertOne(newUser); console.log(`Documento inserido com o ID: ${result.insertedId}`); }
للبحث عن المستندات في مجموعة، نستخدم find() أو findOne().
async function readDocuments(db) { const collection = db.collection("users"); const users = await collection.find({ age: { $gte: 18 } }).toArray(); console.log(users); }
لتحديث مستند، نستخدم updateOne() أو updateMany().
async function updateDocument(db) { const collection = db.collection("users"); const result = await collection.updateOne( { name: "Lucas" }, { $set: { email: "[email protected]" } } ); console.log(`Documentos atualizados: ${result.modifiedCount}`); }
لإزالة المستندات، نستخدمdeleteOne() أوdeleteMany().
async function deleteDocument(db) { const collection = db.collection("users"); const result = await collection.deleteOne({ name: "Lucas" }); console.log(`Documentos deletados: ${result.deletedCount}`); }
بالنسبة لمشروع واسع النطاق، من الأفضل تقسيم اتصال MongoDB وعمليات CRUD. على سبيل المثال، يمكن أن يكون لدينا وحدة اتصال منفصلة وخدمات مخصصة لكل كيان.
// db.js const { MongoClient } = require('mongodb'); const uri = "mongodb://localhost:27017"; const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true }); async function connectDB() { await client.connect(); const db = client.db("mydatabase"); return db; } module.exports = { connectDB };
// index.js const { connectDB } = require('./db'); async function main() { const db = await connectDB(); // Executar operações de CRUD await createDocument(db); await readDocuments(db); await updateDocument(db); await deleteDocument(db); } main();
يشكل MongoDB وNode.js مزيجًا قويًا لبناء واجهات برمجة التطبيقات القابلة للتطوير وتطبيقات الويب الحديثة. بفضل مرونة MongoDB وبيئة JavaScript في Node.js، يمكنك معالجة البيانات بسرعة وكفاءة. يوفر هذا الدليل أساسًا متينًا لدمج MongoDB في مشروع Node.js الخاص بك، بدءًا من التكوين الأولي وحتى عمليات CRUD.
إذا كنت ترغب في التعمق أكثر في الموضوع، ففكر في استكشاف المزيد من الميزات مثل الفهرسة والتجميعات والنسخ المتماثل في MongoDB.
النصائح النهائية:
آمل أن يكون هذا الدليل مفيدًا في دمج MongoDB مع Node.js!
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3