في عمليات إدراج البيانات الضخمة في قاعدة بيانات MongoDB باستخدام Mongoose، يمكن تحسين الأداء بشكل كبير عن طريق استخدام عمليات الإدراج الجماعي أو الـ Bulk Insert. على الرغم من أن Mongoose لا يقدم واجهة واضحة لعمليات الإدراج الجماعي، إلا أنه يمكن استخدام واجهة MongoDB الرسمية لتحقيق هذا الهدف.
في هذه الحالة، يُفضل استخدام insertMany
، وهي واجهة MongoDB تمكن من إدراج مصفوفة من الوثائق في مجموعة واحدة. يمكن تطبيقها كما يلي:
javascript// قم بتحويل مصفوفة البيانات إلى مصفوفة من الوثائق Mongoose
const documents = myData.map(obj => new Collection1(obj));
// استخدم واجهة insertMany لإدراج الوثائق بشكل جماعي
Collection1.insertMany(documents, function(error, result) {
if (error) {
console.error('Error while bulk inserting: ' + error);
} else {
console.log('Bulk insert successful');
console.log(result); // يحتوي على تفاصيل الإدراج الجماعي
}
});
تحتوي insertMany
على واجهة إعادة الاتصال الاختيارية، والتي يمكنك استخدامها لتحديد سلوك الإدراج الجماعي. يُفضل أيضًا التحقق من إدراج الوثائق بنجاح باستخدام تفاصيل الاستجابة التي تعود من الدالة الرد الارتباطية.
تذكر أن هذه الطريقة تُحدث العديد من الوثائق دفعة واحدة، مما يقلل من الوقت اللازم للإدراج.
المزيد من المعلومات
عند التعامل مع كميات كبيرة من البيانات في MongoDB باستخدام Mongoose، يمكن تحسين أداء إدراج البيانات باستخدام عملية الإدراج الجماعي أو Bulk Insert. في الحالة الحالية، يقوم الكود بتكرار عملية الإدراج لكل عنصر في المصفوفة، وهو أمر غير فعال عندما يكون حجم البيانات كبيرًا.
للقيام بإدراج البيانات بشكل جماعي، يمكنك استخدام واجهة MongoDB الأساسية للقيام بعمليات الإدراج الجماعي. يتيح لك Mongoose استخدام واجهة MongoDB الأساسية مباشرة. فيما يلي كيفية تحسين الكود:
javascript// Import mongoose
const mongoose = require('mongoose');
// Connect to MongoDB
mongoose.connect('mongodb://localhost:27017/your-database-name', { useNewUrlParser: true, useUnifiedTopology: true });
// Define your schema
const yourSchema = new mongoose.Schema({
// Define your schema fields here
// For example: name: String, age: Number, ...
});
// Create your model
const Collection1 = mongoose.model('Collection1', yourSchema);
// Your array of objects
const myData = [Obj1, Obj2, Obj3, /* ... */];
// Use the insertMany function for bulk insert
Collection1.insertMany(myData, function (err, result) {
if (err) {
console.error('Error while bulk inserting:', err);
} else {
console.log('Data successfully inserted:', result);
}
// Close the MongoDB connection after insertion
mongoose.connection.close();
});
في هذا الكود، يتم استخدام insertMany
لإدراج جميع البيانات في مصفوفة myData
دفعة واحدة. كما يتم إنشاء اتصال بقاعدة البيانات باستخدام Mongoose ويغلق بعد إتمام عملية الإدراج.
باستخدام هذه الطريقة، يمكنك تحسين أداء التعامل مع كميات كبيرة من البيانات في MongoDB باستخدام Mongoose.