28- كورس Node.js بالعربي – MongoDB Query

MongoDB Query في Node.js

MongoDB Query في Node.js

تعتبر MongoDB واحدة من أشهر قواعد البيانات غير العلائقية، وتستخدم على نطاق واسع لتخزين البيانات في شكل وثائق JSON. يُعد استخدام MongoDB في بيئة Node.js شائعًا نظرًا لسهولة التكامل بينهما وسرعة الأداء. في هذا المقال، سنستعرض كيفية تنفيذ الاستعلامات في MongoDB باستخدام Node.js مع تقديم أمثلة متعددة توضح كيفية إجراء عمليات القراءة والكتابة المختلفة.

إعداد البيئة لاستخدام MongoDB مع Node.js

للبدء في استخدام MongoDB مع Node.js، يجب أولاً تثبيت مكتبة MongoDB Node.js Driver. يمكنك القيام بذلك باستخدام npm عن طريق تشغيل الأمر التالي:

npm install mongodb

بعد التثبيت، يمكنك استيراد المكتبة إلى ملف JavaScript الخاص بك والاتصال بقاعدة البيانات كما يلي:

const { MongoClient } = require('mongodb');
const uri = "mongodb://localhost:27017/mydatabase";
const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true });

async function run() {
    try {
        await client.connect();
        console.log("Connected to MongoDB");
    } finally {
        await client.close();
    }
}
run().catch(console.dir);

أمثلة على استعلامات MongoDB في Node.js

بعد إعداد الاتصال بقاعدة البيانات، يمكنك البدء في تنفيذ الاستعلامات. سنبدأ بمثال على كيفية إدراج وثيقة جديدة في مجموعة:

async function insertDocument() {
    try {
        await client.connect();
        const database = client.db("mydatabase");
        const collection = database.collection("mycollection");
        const doc = { name: "Alice", age: 30, city: "Cairo" };
        const result = await collection.insertOne(doc);
        console.log(`Document inserted with _id: ${result.insertedId}`);
    } finally {
        await client.close();
    }
}
insertDocument().catch(console.dir);

في هذا المثال، نقوم بإدراج وثيقة تحتوي [شركة برمجة مصرية] على معلومات مستخدم مثل الاسم والعمر والمدينة. ثم نقوم بإغلاق الاتصال بقاعدة البيانات بعد الانتهاء.

لنلقِ نظرة الآن على كيفية استرجاع الوثائق من مجموعة باستخدام استعلام بحث:

async function findDocuments() {
    try {
        await client.connect();
        const database = client.db("mydatabase");
        const collection = database.collection("mycollection");
        const query = { city: "Cairo" };
        const cursor = collection.find(query);
        if ((await cursor.count()) === 0) {
            console.log("No documents found!");
        }
        await cursor.forEach(doc => console.log(doc));
    } finally {
        await client.close();
    }
}
findDocuments().catch(console.dir);

في هذا الاستعلام، نبحث عن جميع الوثائق التي تحتوي على المدينة “Cairo”. نستخدم الدالة find لتنفيذ البحث، ونعرض كل وثيقة تم العثور عليها في وحدة [شركة برمجة مصرية] التحكم.

التحديث والحذف في MongoDB باستخدام Node.js

بالإضافة إلى الإدراج والاسترجاع، يمكنك أيضًا تحديث وحذف الوثائق. لنبدأ بمثال على كيفية تحديث وثيقة:

async function updateDocument() {
    try {
        await client.connect();
        const database = client.db("mydatabase");
        const collection = database.collection("mycollection");
        const filter = { name: "Alice" };
        const updateDoc = {
            $set: {
                age: 31,
            },
        };
        const result = await collection.updateOne(filter, updateDoc);
        console.log(`${result.matchedCount} document(s) matched the filter, updated ${result.modifiedCount} document(s)`);
    } finally {
        await client.close();
    }
}
updateDocument().catch(console.dir);

في هذا المثال، نقوم بتحديث عمر المستخدم “Alice” إلى 31 باستخدام دالة updateOne. نعرض عدد الوثائق التي تم تعديلها في وحدة التحكم.

وأخيرًا، مثال على كيفية حذف وثيقة:

async function deleteDocument() {
    try {
        await client.connect();
        const database = client.db("mydatabase");
        const collection = database.collection("mycollection");
        const query = { name: "Alice" };
        const result = await collection.deleteOne(query);
        console.log(`${result.deletedCount} document(s) was/were deleted.`);
    } finally {
        await client.close();
    }
}
deleteDocument().catch(console.dir);

في هذا المثال، نحذف الوثيقة التي يطابق اسم المستخدم فيها “Alice” باستخدام دالة deleteOne. نعرض عدد الوثائق المحذوفة في وحدة التحكم.