MongoDB-এ বাল্ক আপডেট অপারেশন
অনেকগুলো ডকুমেন্ট একসাথে আপডেট করার জন্য MongoDB-র initializeUnorderedBulkOp() ব্যবহার করা হয়। এটি পারফরম্যান্স উল্লেখযোগ্যভাবে বাড়ায় কারণ সকল অপারেশন একসাথে সার্ভারে পাঠানো হয়।
নমুনা ডেটা তৈরি
> db.demo227.insertOne({"_id":"101","Name":"Chris"});
{ "acknowledged" : true, "insertedId" : "101" }
> db.demo227.insertOne({"_id":"102","Name":"Bob"});
{ "acknowledged" : true, "insertedId" : "102" }
সকল ডকুমেন্ট দেখানো
> db.demo227.find();
আউটপুট:
{ "_id" : "101", "Name" : "Chris" }
{ "_id" : "102", "Name" : "Bob" }
বাল্ক আপডেট কোড
> var bulkUpdateValue = [
{"_id": "101", "Name": "Robert"},
{"_id": "102", "Name": "Sam"}
];
> var bulkUpdate = db.demo227.initializeUnorderedBulkOp();
> for (var i = 0; i < bulkUpdateValue.length; i++) {
var updateCounter = bulkUpdateValue[i];
bulkUpdate.find({_id: updateCounter._id}).update({$set: {Name: updateCounter.Name}});
}
> bulkUpdate.execute();
BulkWriteResult({
"writeErrors" : [],
"writeConcernErrors" : [],
"nInserted" : 0,
"nUpserted" : 0,
"nMatched" : 2,
"nModified" : 2,
"nRemoved" : 0,
"upserted" : []
})
আপডেটের পর ডেটা যাচাই
> db.demo227.find();
আউটপুট:
{ "_id" : "101", "Name" : "Robert" }
{ "_id" : "102", "Name" : "Sam" }
মডার্ন বিকল্প: bulkWrite()
MongoDB 3.2+ এ bulkWrite() পদ্ধতি ব্যবহার করা উচিত:
> db.demo227.bulkWrite([
{ updateOne: { filter: { _id: "101" }, update: { $set: { Name: "Robert" } } } },
{ updateOne: { filter: { _id: "102" }, update: { $set: { Name: "Sam" } } } }
]);
এটি আরও ক্লিন, পঠনযোগ্য এবং ফিচার-রিচ।