سنقوم اليوم بدراسة إدخالٍ جماعي في MongoDB. يمكن إدخال وثائق متعددة في وقت واحد في MongoDB باستخدام عملية الإدخال الجماعي حيث يتم تمرير مصفوفة من الوثائق كمعامل لطريقة الإدخال.
إدخال جماعي في MongoDB
يقوم إدخال جماعي في MongoDB بتنفيذ الإدخال بترتيب افتراضي. إذا حدث خطأ أثناء الإدخال في نقطة معينة ، فلن يتم الإدخال للوثائق المتبقية. لنرى مثالًا على كيفية إدخال وثائق متعددة باستخدام إدخال جماعي في MongoDB من خلال سطر الأوامر.
إدخال العديد من وثائق MongoDB
> db.car.insert(
... [
... { _id:1,name:"Audi",color:"Red",cno:"H101",mfdcountry:"Germany",speed:75 },
... { _id:2,name:"Swift",color:"Black",cno:"H102",mfdcountry:"Italy",speed:60 },
... { _id:3,name:"Maruthi800",color:"Blue",cno:"H103",mfdcountry:"India",speed:70 },
... { _id:4,name:"Polo",color:"White",cno:"H104",mfdcountry:"Japan",speed:65 },
... { _id:5,name:"Volkswagen",color:"JetBlue",cno:"H105",mfdcountry:"Rome",speed:80 }
... ]
... )
BulkWriteResult({
"writeErrors" : [ ],
"writeConcernErrors" : [ ],
"nInserted" : 5,
"nUpserted" : 0,
"nMatched" : 0,
"nModified" : 0,
"nRemoved" : 0,
"upserted" : [ ]
})
تمت هذه العملية بإدخال خمس وثائق. يقوم MongoDB تلقائيًا بإنشاء حقل “id” إذا لم يتم تحديده من قبل المستخدم في الاستعلام. توضح عمود “nInserted” للمستخدم عدد الوثائق التي تم إدخالها. لعرض الوثائق المدخلة ، قم بتنفيذ الاستعلام التالي كما هو موضح أدناه.
> db.car.find()
{ "_id" : 1, "name" : "Audi", "color" : "Red", "cno" : "H101", "mfdcountry" : "Germany", "speed" : 75 }
{ "_id" : 2, "name" : "Swift", "color" : "Black", "cno" : "H102", "mfdcountry" : "Italy", "speed" : 60 }
{ "_id" : 3, "name" : "Maruthi800", "color" : "Blue", "cno" : "H103", "mfdcountry" : "India", "speed" : 70 }
{ "_id" : 4, "name" : "Polo", "color" : "White", "cno" : "H104", "mfdcountry" : "Japan", "speed" : 65 }
{ "_id" : 5, "name" : "Volkswagen", "color" : "JetBlue", "cno" : "H105", "mfdcountry" : "Rome", "speed" : 80 }
>
اقرأ المزيد عن عمليات البحث في MongoDB وإدخال MongoDB. عند الإدخال ، ليس من الضروري أن يقوم المستخدم بتوفير جميع الحقول في الاستعلام. الآن دعنا نرى كيف يعمل الإدخال عندما لا يتم تحديد بعض الحقول.
إدراج الوثائق بتحديد بعض الحقول في MongoDB بشكل جماعي
> db.car.insert(
... [
... { _id:6,name:"HondaCity",color:"Grey",cno:"H106",mfdcountry:"Sweden",speed:45 },
... {name:"Santro",color:"Pale Blue",cno:"H107",mfdcountry:"Denmark",speed:55 },
... { _id:8,name:"Zen",speed:54 }
... ]
... )
BulkWriteResult({
"writeErrors" : [ ],
"writeConcernErrors" : [ ],
"nInserted" : 3,
"nUpserted" : 0,
"nMatched" : 0,
"nModified" : 0,
"nRemoved" : 0,
"upserted" : [ ]
})
>
في هذا المثال، للوثيقة الثانية، لم يتم تحديد حقل id بواسطة المستخدم وبالنسبة للوثيقة الثالثة تم توفير فقط حقول id و name و speed في الاستعلام. يتم إجراء إدراج ناجح حتى وإن كانت بعض الحقول مفقودة في الوثيقتين الثانية والثالثة. تشير عمود nInserted إلى أنه تمت إضافة ثلاث وثائق. قم باستدعاء طريقة البحث وتحقق من الوثائق المدرجة.
> db.car.find()
{ "_id" : 1, "name" : "Audi", "color" : "Red", "cno" : "H101", "mfdcountry" : "Germany", "speed" : 75 }
{ "_id" : 2, "name" : "Swift", "color" : "Black", "cno" : "H102", "mfdcountry" : "Italy", "speed" : 60 }
{ "_id" : 3, "name" : "Maruthi800", "color" : "Blue", "cno" : "H103", "mfdcountry" : "India", "speed" : 70 }
{ "_id" : 4, "name" : "Polo", "color" : "White", "cno" : "H104", "mfdcountry" : "Japan", "speed" : 65 }
{ "_id" : 5, "name" : "Volkswagen", "color" : "JetBlue", "cno" : "H105", "mfdcountry" : "Rome", "speed" : 80 }
{ "_id" : 6, "name" : "HondaCity", "color" : "Grey", "cno" : "H106", "mfdcountry" : "Sweden", "speed" : 45 }
{ "_id" : ObjectId("54885b8e61307aec89441a0b"), "name" : "Santro", "color" : "Pale Blue", "cno" : "H107", "mfdcountry" : "Denmark", "speed" : 55 }
{ "_id" : 8, "name" : "Zen", "speed" : 54 }
>
يرجى ملاحظة أنه يتم إنشاء معرف تلقائيًا بواسطة MongoDB لسيارة “Santro”. بالنسبة للمعرف 8 – تم إدراج حقول الاسم والسرعة فقط.
إدراج وثائق غير مرتبة
أثناء أداء الإدراج غير المرتب، إذا حدث خطأ في نقطة معينة، يستمر MongoDB في إدراج باقي الوثائق في مصفوفة. على سبيل المثال؛
> db.car.insert(
... [
... { _id:9,name:"SwiftDezire",color:"Maroon",cno:"H108",mfdcountry:"New York",speed:40 },
... { name:"Punto",color:"Wine Red",cno:"H109",mfdcountry:"Paris",speed:45 },
... ],
... { ordered: false }
... )
BulkWriteResult({
"writeErrors" : [ ],
"writeConcernErrors" : [ ],
"nInserted" : 2,
"nUpserted" : 0,
"nMatched" : 0,
"nModified" : 0,
"nRemoved" : 0,
"upserted" : [ ]
})
>
تم تحديد ordered false في استعلام الإدراج مشيرًا إلى أنها مجموعة غير مرتبة. قم بتنفيذ db.car.find()
{ "_id" : 1, "name" : "Audi", "color" : "Red", "cno" : "H101", "mfdcountry" : "Germany", "speed" : 75 }
{ "_id" : 2, "name" : "Swift", "color" : "Black", "cno" : "H102", "mfdcountry" : "Italy", "speed" : 60 }
{ "_id" : 3, "name" : "Maruthi800", "color" : "Blue", "cno" : "H103", "mfdcountry" : "India", "speed" : 70 }
{ "_id" : 4, "name" : "Polo", "color" : "White", "cno" : "H104", "mfdcountry" : "Japan", "speed" : 65 }
{ "_id" : 5, "name" : "Volkswagen", "color" : "JetBlue", "cno" : "H105", "mfdcountry" : "Rome", "speed" : 80 }
{ "_id" : 6, "name" : "HondaCity", "color" : "Grey", "cno" : "H106", "mfdcountry" : "Sweden", "speed" : 45 }
{ "_id" : ObjectId("54746407d785e3a05a1808a6"), "name" : "Santro", "color" : "Pale Blue", "cno" : "H107", "mfdcountry" : "Denmark", "speed" : 55 }
{ "_id" : 8, "name" : "Zen", "speed" : 54 }
{ "_id" : 9, "name" : "SwiftDezire", "color" : "Maroon", "cno" : "H108", "mfdcountry" : "New York", "speed" : 40 }
{ "_id" : ObjectId("5474642dd785e3a05a1808a7"), "name" : "Punto", "color" : "Wine Red", "cno" : "H109", "mfdcountry" : "Paris", "speed" : 45 }
تم إدراج الوثائق وكما يمكنك رؤية، إنه إدراج غير مرتب. إذا واجهت طريقة الإدراج خطأ، يتضمن النتيجة حقل “WriteResult.writeErrors” الذي يشير إلى رسالة الخطأ التي تسببت في الفشل.
إدراج قيمة مكررة للمعرّف
> db.car.insert({_id:6,name:"Innova"})
WriteResult({
"nInserted" : 0,
"writeError" : {
"code" : 11000,
"errmsg" : "insertDocument :: caused by :: 11000 E11000 duplicate key error index: journaldev.car.$_id_ dup key: { : 6.0 }"
}
})
>
الخطأ يشير إلى أننا نقوم بإدراج مستند للمعرّف 6 الذي يحتوي بالفعل على مستند، مما يؤدي إلى إثارة خطأ المفتاح المكرّر لمعرّف بقيمة 6.
طريقة Bulk.insert() في MongoDB
تقوم هذه الطريقة بتنفيذ عملية الإدراج بشكل جماعي. تمت إضافتها اعتبارًا من الإصدار 2.6 فما فوق. الصيغة هي Bulk.insert(<document>)
. document: يحدد المستند الذي يجب إدراجه. الآن سنرى مثالًا على الإدراج الجماعي.
إدراج غير مرتب بشكل جماعي
> var carbulk = db.car.initializeUnorderedBulkOp();
> carbulk.insert({ name:"Ritz", color:"Grey",cno:"H109",mfdcountry:"Mexico",speed:62});
> carbulk.insert({ name:"Versa", color:"Magenta",cno:"H110",mfdcountry:"France",speed:68});
> carbulk.insert({ name:"Innova", color:"JetRed",cno:"H111",mfdcountry:"Dubai",speed:72});
> carbulk.execute();
BulkWriteResult({
"writeErrors" : [ ],
"writeConcernErrors" : [ ],
"nInserted" : 3,
"nUpserted" : 0,
"nMatched" : 0,
"nModified" : 0,
"nRemoved" : 0,
"upserted" : [ ]
})
>
تم إنشاء قائمة غير مرتبة تسمى carbulk وتحديد استعلام الإدراج مع الحقول والقيم التي يجب إدراجها. يجب ملاحظة أنه من الضروري استدعاء طريقة execute() بعد البيان الأخير للإدراج لضمان أن البيانات قد تم إدراجها فعليًا في قاعدة البيانات.
إدراج مجموعة MongoDB بترتيب
هذا مشابه للإدراج الجماعي غير المرتب ولكننا نستخدم استدعاء initializeOrderedBulkOp
.
>var car1bulk = db.car.initializeOrderedBulkOp();
>car1bulk.insert({ name:"Ertiga", color:"Red",cno:"H112",mfdcountry:"America",speed:65});
>car1bulk.insert({ name:"Quanta", color:"Maroon",cno:"H113",mfdcountry:"Rome",speed:78});
>car1bulk.execute();
BulkWriteResult({
"writeErrors" : [ ],
"writeConcernErrors" : [ ],
"nInserted" : 2,
"nUpserted" : 0,
"nMatched" : 0,
"nModified" : 0,
"nRemoved" : 0,
"upserted" : [ ]
})
أولاً نقوم بإنشاء قائمة مرتبة لمجموعة السيارات المسماة carbulk1 ومن ثم نقوم بإدراج الوثائق عن طريق استدعاء طريقة execute().
برنامج إدراج مجموعة MongoDB بلغة Java
لنرى برنامج Java لعمليات الإدراج الجماعي المختلفة، التي رأيناها باستخدام أوامر الطرفية حتى الآن. فيما يلي البرنامج الJava للإدراج الجماعي باستخدام سائق MongoDB للJava الإصدار 2.x.
package com.journaldev.mongodb;
import com.mongodb.BasicDBObject;
import com.mongodb.BulkWriteOperation;
import com.mongodb.BulkWriteResult;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.MongoClient;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List;
public class MongoDBBulkInsert {
//الطريقة التي تقوم بإدراج جميع المستندات
public static void insertmultipledocs() throws UnknownHostException{
//الحصول على اتصال جديد بقاعدة البيانات بشرط أن يكون التطبيق قيد التشغيل
MongoClient mongoClient = new MongoClient("localhost");
////استخدام قاعدة بيانات الاختبار، استخدم قاعدة بياناتك هنا
DB db=mongoClient.getDB("test");
////جلب كائن المجموعة، يتم استخدام سيارة هنا، استخدم الخاص بك
DBCollection coll = db.getCollection("car");
//إنشاء كائن جديد
DBObject d1 = new BasicDBObject();
//بيانات للكائن d1
d1.put("_id", 11);
d1.put("name","WagonR");
d1.put("color", "MetallicSilver");
d1.put("cno", "H141");
d1.put("mfdcountry","Australia");
d1.put("speed",66);
DBObject d2 = new BasicDBObject();
//بيانات للكائن d2
d2.put("_id", 12);
d2.put("name","Xylo");
d2.put("color", "JetBlue");
d2.put("cno", "H142");
d2.put("mfdcountry","Europe");
d2.put("speed",69);
DBObject d3 = new BasicDBObject();
//بيانات للكائن d3
d3.put("_id", 13);
d3.put("name","Alto800");
d3.put("color", "JetGrey");
d3.put("cno", "H143");
d3.put("mfdcountry","Austria");
d3.put("speed",74);
//إنشاء قائمة جديدة
List docs = new ArrayList<>();
//إضافة d1، d2، و d3 إلى القائمة docs
docs.add(d1);
docs.add(d2);
docs.add(d3);
//إدراج قائمة docs إلى المجموعة
coll.insert(docs);
//تخزين النتيجة في المؤشر
DBCursor carmuldocs = coll.find();
//طباعة محتويات المؤشر
try {
while(carmuldocs.hasNext()) {
System.out.println(carmuldocs.next());
}
} finally {
carmuldocs.close();//close the cursor
}
}
//الطريقة التي تقوم بإدراج المستندات مع بعض الحقول
public static void insertsomefieldsformultipledocs() throws UnknownHostException{
//الحصول على اتصال جديد بقاعدة البيانات بشرط أن يكون التطبيق قيد التشغيل
MongoClient mongoClient = new MongoClient("localhost");
////استخدام قاعدة بيانات الاختبار، استخدم قاعدة بياناتك هنا
DB db=mongoClient.getDB("test");
////جلب كائن المجموعة، يتم استخدام سيارة هنا، استخدم الخاص بك
DBCollection coll = db.getCollection("car");
//إنشاء كائن d1
DBObject d1 = new BasicDBObject();
//إدراج بيانات للاسم، اللون، والسرعة
d1.put("name","Indica");
d1.put("color", "Silver");
d1.put("cno", "H154");
DBObject d2 = new BasicDBObject();
//إدراج بيانات للمعرف، الاسم، والسرعة
d2.put("_id", 43);
d2.put("name","Astar");
d2.put("speed",79);
List docs = new ArrayList<>();
docs.add(d1);
docs.add(d2);
coll.insert(docs);
DBCursor carmuldocs = coll.find();
System.out.println("-----------------------------------------------");
try {
while(carmuldocs.hasNext()) {
System.out.println(carmuldocs.next());
}
} finally {
carmuldocs.close();//close the cursor
}
}
//الطريقة التي تقوم بالتحقق من وجود مستندات مكررة
public static void insertduplicatedocs() throws UnknownHostException{
//الحصول على اتصال جديد بقاعدة البيانات بشرط أن يكون التطبيق قيد التشغيل
MongoClient mongoClient = new MongoClient("localhost");
////استخدام قاعدة بيانات الاختبار، استخدم قاعدة بياناتك هنا
DB db=mongoClient.getDB("test");
////جلب كائن المجموعة، يتم استخدام سيارة هنا، استخدم الخاص بك
DBCollection coll = db.getCollection("car");
DBObject d1 = new BasicDBObject();
//إدراج بيانات مكررة للمعرف 11
d1.put("_id", 11);
d1.put("name","WagonR-Lxi");
coll.insert(d1);
DBCursor carmuldocs = coll.find();
System.out.println("-----------------------------------------------");
try {
while(carmuldocs.hasNext()) {
System.out.println(carmuldocs.next());
}
} finally {
carmuldocs.close();//close the cursor
}
}
//الطريقة التي تقوم بأداء عملية إدراج مجموعة غير مرتبة
public static void insertbulkunordereddocs() throws UnknownHostException{
//الحصول على اتصال جديد بقاعدة البيانات بشرط أن يكون التطبيق قيد التشغيل
MongoClient mongoClient = new MongoClient("localhost");
////استخدام قاعدة بيانات الاختبار، استخدم قاعدة بياناتك هنا
DB db=mongoClient.getDB("test");
////جلب كائن المجموعة، يتم استخدام سيارة هنا، استخدم الخاص بك
DBCollection coll = db.getCollection("car");
DBObject d1 = new BasicDBObject();
d1.put("name","Suzuki S-4");
d1.put("color", "Yellow");
d1.put("cno", "H167");
d1.put("mfdcountry","Italy");
d1.put("speed",54);
DBObject d2 = new BasicDBObject();
d2.put("name","Santro-Xing");
d2.put("color", "Cyan");
d2.put("cno", "H164");
d2.put("mfdcountry","Holand");
d2.put("speed",76);
//تهيئة وإنشاء مجموعة غير مرتبة
BulkWriteOperation b1 = coll.initializeUnorderedBulkOperation();
//إدراج d1 و d2 إلى المجموعة غير المرتبة b1
b1.insert(d1);
b1.insert(d2);
//تنفيذ المجموعة
BulkWriteResult r1 = b1.execute();
DBCursor carmuldocs = coll.find();
System.out.println("-----------------------------------------------");
try {
while(carmuldocs.hasNext()) {
System.out.println(carmuldocs.next());
}
} finally {
carmuldocs.close();//close the cursor
}
}
//الطريقة التي تقوم بأداء عملية إدراج مجموعة مرتبة
public static void insertbulkordereddocs() throws UnknownHostException{
//الحصول على اتصال جديد بقاعدة البيانات بشرط أن يكون التطبيق قيد التشغيل
MongoClient mongoClient = new MongoClient("localhost");
////استخدام قاعدة بيانات الاختبار، استخدم قاعدة بياناتك هنا
DB db=mongoClient.getDB("test");
////جلب كائن المجموعة، يتم استخدام سيارة هنا، استخدم الخاص بك
DBCollection coll = db.getCollection("car");
DBObject d1 = new BasicDBObject();
d1.put("name","Palio");
d1.put("color", "Purple");
d1.put("cno", "H183");
d1.put("mfdcountry","Venice");
d1.put("speed",82);
DBObject d2 = new BasicDBObject();
d2.put("name","Micra");
d2.put("color", "Lime");
d2.put("cno", "H186");
d2.put("mfdcountry","Ethopia");
d2.put("speed",84);
//تهيئة وإنشاء مجموعة مرتبة
BulkWriteOperation b1 = coll.initializeOrderedBulkOperation();
b1.insert(d1);
b1.insert(d2);
//استدعاء تنفيذ
BulkWriteResult r1 = b1.execute();
DBCursor carmuldocs = coll.find();
System.out.println("-----------------------------------");
try {
while(carmuldocs.hasNext()) {
System.out.println(carmuldocs.next());
}
} finally {
carmuldocs.close();//close the cursor
}
}
public static void main(String[] args) throws UnknownHostException{
//استدعاء جميع الطرق لأداء عملية الإدراج
insertmultipledocs();
insertsomefieldsformultipledocs();
insertbulkunordereddocs();
insertbulkordereddocs();
insertduplicatedocs();
}
}
أدناه هو إخراج البرنامج أعلاه.
{ "_id" : 11 , "name" : "WagonR" , "color" : "MetallicSilver" , "cno" : "H141" , "mfdcountry" : "Australia" , "speed" : 66}
{ "_id" : 12 , "name" : "Xylo" , "color" : "JetBlue" , "cno" : "H142" , "mfdcountry" : "Europe" , "speed" : 69}
{ "_id" : 13 , "name" : "Alto800" , "color" : "JetGrey" , "cno" : "H143" , "mfdcountry" : "Austria" , "speed" : 74}
-----------------------------------------------
{ "_id" : 11 , "name" : "WagonR" , "color" : "MetallicSilver" , "cno" : "H141" , "mfdcountry" : "Australia" , "speed" : 66}
{ "_id" : 12 , "name" : "Xylo" , "color" : "JetBlue" , "cno" : "H142" , "mfdcountry" : "Europe" , "speed" : 69}
{ "_id" : 13 , "name" : "Alto800" , "color" : "JetGrey" , "cno" : "H143" , "mfdcountry" : "Austria" , "speed" : 74}
{ "_id" : { "$oid" : "548860e803649b8efac5a1d7"} , "name" : "Indica" , "color" : "Silver" , "cno" : "H154"}
{ "_id" : 43 , "name" : "Astar" , "speed" : 79}
-----------------------------------------------
{ "_id" : 11 , "name" : "WagonR" , "color" : "MetallicSilver" , "cno" : "H141" , "mfdcountry" : "Australia" , "speed" : 66}
{ "_id" : 12 , "name" : "Xylo" , "color" : "JetBlue" , "cno" : "H142" , "mfdcountry" : "Europe" , "speed" : 69}
{ "_id" : 13 , "name" : "Alto800" , "color" : "JetGrey" , "cno" : "H143" , "mfdcountry" : "Austria" , "speed" : 74}
{ "_id" : { "$oid" : "548860e803649b8efac5a1d7"} , "name" : "Indica" , "color" : "Silver" , "cno" : "H154"}
{ "_id" : 43 , "name" : "Astar" , "speed" : 79}
{ "_id" : { "$oid" : "548860e803649b8efac5a1d8"} , "name" : "Suzuki S-4" , "color" : "Yellow" , "cno" : "H167" , "mfdcountry" : "Italy" , "speed" : 54}
{ "_id" : { "$oid" : "548860e803649b8efac5a1d9"} , "name" : "Santro-Xing" , "color" : "Cyan" , "cno" : "H164" , "mfdcountry" : "Holand" , "speed" : 76}
-----------------------------------
{ "_id" : 11 , "name" : "WagonR" , "color" : "MetallicSilver" , "cno" : "H141" , "mfdcountry" : "Australia" , "speed" : 66}
{ "_id" : 12 , "name" : "Xylo" , "color" : "JetBlue" , "cno" : "H142" , "mfdcountry" : "Europe" , "speed" : 69}
{ "_id" : 13 , "name" : "Alto800" , "color" : "JetGrey" , "cno" : "H143" , "mfdcountry" : "Austria" , "speed" : 74}
{ "_id" : { "$oid" : "548860e803649b8efac5a1d7"} , "name" : "Indica" , "color" : "Silver" , "cno" : "H154"}
{ "_id" : 43 , "name" : "Astar" , "speed" : 79}
{ "_id" : { "$oid" : "548860e803649b8efac5a1d8"} , "name" : "Suzuki S-4" , "color" : "Yellow" , "cno" : "H167" , "mfdcountry" : "Italy" , "speed" : 54}
{ "_id" : { "$oid" : "548860e803649b8efac5a1d9"} , "name" : "Santro-Xing" , "color" : "Cyan" , "cno" : "H164" , "mfdcountry" : "Holand" , "speed" : 76}
{ "_id" : { "$oid" : "548860e803649b8efac5a1da"} , "name" : "Palio" , "color" : "Purple" , "cno" : "H183" , "mfdcountry" : "Venice" , "speed" : 82}
{ "_id" : { "$oid" : "548860e803649b8efac5a1db"} , "name" : "Micra" , "color" : "Lime" , "cno" : "H186" , "mfdcountry" : "Ethopia" , "speed" : 84}
Exception in thread "main" com.mongodb.MongoException$DuplicateKey: { "serverUsed" : "localhost:27017" , "ok" : 1 , "n" : 0 , "err" : "insertDocument :: caused by :: 11000 E11000 duplicate key error index: test.car.$_id_ dup key: { : 11 }" , "code" : 11000}
at com.mongodb.CommandResult.getWriteException(CommandResult.java:88)
at com.mongodb.CommandResult.getException(CommandResult.java:79)
at com.mongodb.DBCollectionImpl.translateBulkWriteException(DBCollectionImpl.java:314)
at com.mongodb.DBCollectionImpl.insert(DBCollectionImpl.java:189)
at com.mongodb.DBCollectionImpl.insert(DBCollectionImpl.java:165)
at com.mongodb.DBCollection.insert(DBCollection.java:93)
at com.mongodb.DBCollection.insert(DBCollection.java:78)
at com.mongodb.DBCollection.insert(DBCollection.java:120)
at com.journaldev.mongodb.MongoDBBulkInsert.insertduplicatedocs(MongoDBBulkInsert.java:163)
at com.journaldev.mongodb.MongoDBBulkInsert.main(MongoDBBulkInsert.java:304)
إذا كنت تستخدم برنامج تشغيل MongoDB java 3.x، فاستخدم البرنامج أدناه.
package com.journaldev.mongodb.main;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List;
import org.bson.Document;
import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
public class MongoDBBulkInsert {
public static void main(String[] args) throws UnknownHostException {
// استدعاء جميع الطرق لأداء عملية الإدخال
insertmultipledocs();
insertsomefieldsformultipledocs();
insertduplicatedocs();
}
// الطريقة التي تقوم بإدخال جميع المستندات
public static void insertmultipledocs() throws UnknownHostException {
// الحصول على اتصال جديد بقاعدة البيانات على افتراض أنها تعمل
MongoClient mongoClient = new MongoClient("localhost");
//// استخدم test كقاعدة بيانات، استخدم قاعدة البيانات الخاصة بك هنا
MongoDatabase db = mongoClient.getDatabase("test");
//// استرداد كائن المجموعة، يتم استخدام car هنا، استخدم الخاص بك
MongoCollection coll = db.getCollection("car");
// إنشاء كائن جديد
Document d1 = new Document();
// بيانات للكائن d1
d1.put("_id", 11);
d1.put("name", "WagonR");
d1.put("color", "MetallicSilver");
d1.put("cno", "H141");
d1.put("mfdcountry", "Australia");
d1.put("speed", 66);
Document d2 = new Document();
// بيانات للكائن d2
d2.put("_id", 12);
d2.put("name", "Xylo");
d2.put("color", "JetBlue");
d2.put("cno", "H142");
d2.put("mfdcountry", "Europe");
d2.put("speed", 69);
Document d3 = new Document();
// بيانات للكائن d3
d3.put("_id", 13);
d3.put("name", "Alto800");
d3.put("color", "JetGrey");
d3.put("cno", "H143");
d3.put("mfdcountry", "Austria");
d3.put("speed", 74);
// إنشاء قائمة جديدة
List docs = new ArrayList<>();
// إضافة d1، d2 و d3 إلى قائمة docs
docs.add(d1);
docs.add(d2);
docs.add(d3);
// إدخال قائمة docs إلى المجموعة
coll.insertMany(docs);
// يخزن النتيجة في المؤشر
FindIterable carmuldocs = coll.find();
for (Document d : carmuldocs)
System.out.println(d);
mongoClient.close();
}
// الطريقة التي تقوم بإدخال المستندات مع بعض الحقول
public static void insertsomefieldsformultipledocs() throws UnknownHostException {
// الحصول على اتصال جديد بقاعدة البيانات على افتراض أنها تعمل
MongoClient mongoClient = new MongoClient("localhost");
//// استخدم test كقاعدة بيانات، استخدم قاعدة البيانات الخاصة بك هنا
MongoDatabase db = mongoClient.getDatabase("test");
//// استرداد كائن المجموعة، يتم استخدام car هنا، استخدم الخاص بك
MongoCollection coll = db.getCollection("car");
// إنشاء كائن d1
Document d1 = new Document();
// إدخال بيانات للاسم واللون والسرعة
d1.put("name", "Indica");
d1.put("color", "Silver");
d1.put("cno", "H154");
Document d2 = new Document();
// إدخال بيانات للمعرف والاسم والسرعة
d2.put("_id", 43);
d2.put("name", "Astar");
d2.put("speed", 79);
List docs = new ArrayList<>();
docs.add(d1);
docs.add(d2);
coll.insertMany(docs);
FindIterable carmuldocs = coll.find();
System.out.println("-----------------------------------------------");
for (Document d : carmuldocs)
System.out.println(d);
mongoClient.close();
}
// الطريقة التي تفحص المستندات المكررة
public static void insertduplicatedocs() throws UnknownHostException {
// الحصول على اتصال جديد بقاعدة البيانات على افتراض أنها تعمل
MongoClient mongoClient = new MongoClient("localhost");
//// استخدم test كقاعدة بيانات، استخدم قاعدة البيانات الخاصة بك هنا
MongoDatabase db = mongoClient.getDatabase("test");
//// استرداد كائن المجموعة، يتم استخدام car هنا، استخدم الخاص بك
MongoCollection coll = db.getCollection("car");
Document d1 = new Document();
// إدخال بيانات مكررة للمعرف 11
d1.put("_id", 11);
d1.put("name", "WagonR-Lxi");
coll.insertOne(d1);
FindIterable carmuldocs = coll.find();
System.out.println("-----------------------------------------------");
for (Document d : carmuldocs)
System.out.println(d);
mongoClient.close();
}
}
تظهر الصورة أدناه عينة تشغيل لبرنامج إدراج بالجملة في مونغو دي بي جافا. هذا كل شيء بالنسبة لإدراج بالجملة في MongoDB باستخدام Mongo shell ومشغل الجافا، سننظر في المزيد من عمليات MongoDB في المشاركات القادمة.
Source:
https://www.digitalocean.com/community/tutorials/mongodb-bulk-insert-insertmany