MongoDB مصفوفة من الكائنات باستخدام الإدراج () مع المثال
⚡ ملخص ذكي
MongoDB توضح دالة insert() كيفية إضافة عدة مستندات إلى مجموعة في عملية واحدة. فهي تخزن مصفوفة من سجلات الموظفين، وتُضمّن المصفوفات داخل مستند، وتعرض النتائج بشكل منظم باستخدام دالة الطباعة JSON.

ما هي دالة insert() في MongoDB?
طريقة insert() في MongoDB تُضيف هذه الدالة مستندًا واحدًا أو أكثر إلى مجموعة. المستند عبارة عن مجموعة من أزواج الحقول والقيم المخزنة بصيغة BSON، وهي صيغة ثنائية من JSON. عند تمرير مستند واحد، تقوم الدالة insert() بتخزين هذا السجل فقط؛ أما عند تمرير مصفوفة من المستندات، فتقوم بتخزينها جميعًا في عملية واحدة، مما يُسرّع عملية الإدخال مقارنةً بإدخالها واحدًا تلو الآخر.
يتم تنفيذ هذه الطريقة على مجموعة بيانات محددة باستخدام النمط db.collection.insert(). إذا لم تكن مجموعة البيانات المستهدفة موجودة بعد، MongoDB يتم إنشاؤه تلقائيًا أثناء عملية الإدخال الأولى. كما يحصل كل مستند على حقل _id فريد إذا لم تقم بتوفيره، بحيث يمكن تحديد كل سجل لاحقًا.
بينما لا تزال دالة insert() تعمل، فإن الإصدارات الأحدث MongoDB توفر الإصدارات الجديدة دالتي insertOne() و insertMany() كبدائل أوضح. تستخدم الأمثلة أدناه دالة insert() لإضافة مصفوفة من مستندات الموظفين، ثم تعرض النتائج بتنسيق JSON قابل للقراءة.
إضافة مصفوفة من المستندات
يمكن أيضًا استخدام أمر "إدراج" لإدراج مستندات متعددة في مجموعة في وقت واحد. يمكن استخدام مثال التعليمات البرمجية أدناه لإدراج مستندات متعددة في وقت واحد.
يوضح المثال التالي كيفية القيام بذلك،
الخطوة 1) إنشاء Javaسيناريو متغير يسمى myEmployee للاحتفاظ بمجموعة المستندات
الخطوة 2) أضف المستندات المطلوبة مع اسم الحقل والقيم إلى المتغير
الخطوة 3) استخدم أمر الإدراج لإدراج مجموعة المستندات في المجموعة
var myEmployee= [ { "Employeeid" : 1, "EmployeeName" : "Smith" }, { "Employeeid" : 2, "EmployeeName" : "Mohan" }, { "Employeeid" : 3, "EmployeeName" : "Joe" }, ]; db.Employee.insert(myEmployee);
إذا تم تنفيذ الأمر بنجاح، سيتم عرض الناتج التالي
يُظهر الإخراج أنه تمت إضافة تلك المستندات الثلاثة إلى المجموعة.
كيفية إدراج مصفوفة داخل مستند
إلى جانب إدراج مجموعة من المستندات المنفصلة، MongoDB تتيح لك هذه الخاصية تخزين مصفوفة كحقل داخل مستند واحد. وهذا مفيد عندما يحتوي سجل واحد بطبيعته على قائمة من القيم، مثل موظف لديه عدة مهارات أو طالب مسجل في عدة دورات. MongoDB يستخدم نموذج مستند مرن، حيث توجد المصفوفة مباشرة داخل الكائن بدلاً من وجودها في جدول منفصل، مما يحافظ على البيانات ذات الصلة معًا.
يُدرج المثال التالي مستندًا واحدًا للموظف يحتوي على حقل مصفوفة يُسمى "المهارات":
db.Employee.insert( { "Employeeid" : 4, "EmployeeName" : "Alan", "Skills" : [ "MongoDB", "Node.js", "Express" ] } );
تعمل أجزاء هذه الوثيقة على النحو التالي:
- معرف الموظف و اسم الموظف هي أزواج عادية من الحقول والقيم.
- مهاراتي هو حقل مصفوفة يحتوي على ثلاث قيم نصية داخل أقواس مربعة.
- يتم تخزين المستند بأكمله، بما في ذلك المصفوفة المضمنة، في عملية إدراج واحدة.
بعد إضافة السجل، يمكنك تأكيد المصفوفة المضمنة باستخدام استعلام بحث يطبع النتيجة بتنسيق JSON:
db.Employee.find( { "Employeeid" : 4 } ).forEach(printjson)
يُظهر الناتج مصفوفة المهارات المتداخلة داخل مستند الموظف. Laterيمكنك إضافة قيم جديدة إلى المصفوفة باستخدام عامل التشغيل $push، أو قراءة عنصر واحد من خلال موضع فهرسه. يحافظ تخزين القيم المتصلة بهذه الطريقة على استقلالية كل مستند، ويقلل الحاجة إلى عمليات الربط بين المجموعات، ويجعل البيانات أسهل في القراءة والصيانة.
insert() مقابل insertOne() مقابل insertMany()
MongoDB يُقدّم ثلاث طرق مترابطة لإضافة البيانات. يقارن الجدول أدناه بينها لتتمكن من اختيار الطريقة المناسبة:
| الأسلوب | الهدف | مثال |
|---|---|---|
| إدراج() | طريقة قديمة لإضافة مستند واحد أو مجموعة من المستندات. لا تزال تعمل ولكنها أصبحت مهملة في برامج التشغيل الأحدث. | db.Employee.insert(myEmployee) |
| insertOne() | يضيف مستندًا واحدًا فقط ويعيد معرّفه المُدرج. يُفضّل استخدامه مع السجلات الفردية. | db.Employee.insertOne({ … }) |
| insertMany() | يُضيف هذا الأمر مصفوفة من المستندات في استدعاء واحد، ويعيد جميع المعرّفات المُدرجة. يُفضّل استخدامه لعمليات الإدراج الجماعي. | db.Employee.insertMany([ { … }, { … } ]) |
في المشاريع الجديدة، استخدم الدالتين insertOne() و insertMany() لأنهما توضحان الغرض بشكل أفضل وتوفران تقارير أخطاء أكثر دقة. أما الدالة insert()، فتبقى متاحة بشكل أساسي للتوافق مع الإصدارات السابقة من الدروس والبرامج النصية.
الطباعة بتنسيق JSON
JSON هو تنسيق يسمى Javaتدوين كائنات النص، وهي مجرد وسيلة لتخزين المعلومات بطريقة منظمة وسهلة القراءة. في أمثلةنا الإضافية، سنستخدم وظيفة الطباعة JSON لرؤية المخرجات بتنسيق أفضل.
دعونا نلقي نظرة على مثال للطباعة بتنسيق JSON
db.Employee.find().forEach(printjson)
Code التفسير:
- التغيير الأول هو إضافة الدالة المسماة forEach() إلى الدالة find(). تضمن هذه الإضافة المرور على كل مستند في المجموعة بشكل صريح، مما يمنحك تحكمًا أكبر في كيفية التعامل مع كل مستند.
- التغيير الثاني هو وضع أمر printjson في عبارة forEach. سيؤدي هذا إلى عرض كل مستند في المجموعة بتنسيق JSON.
إذا تم تنفيذ الأمر بنجاح، سيتم عرض الناتج التالي
الإخراج:
يُظهر الإخراج بوضوح أن جميع المستندات مطبوعة بأسلوب JSON.


