কম্পিউটার টিউটোরিয়াল

MongoDB-তে এক কোয়েরিতে একাধিক ডকুমেন্ট আপডেট করা (initializeUnorderedBulkOp ব্যবহার করে)

MongoDB-এ একাধিক ডকুমেন্টকে একসাথে আপডেট করতে (বাল্ক রাইট) initializeUnorderedBulkOp() ব্যবহার করা হয়। এটি পারফরম্যান্স বাড়ায়।

নমুনা ডেটা তৈরি করা

upDateMultipleRowsDemo কালেকশনে চারটি ডকুমেন্ট ইনসার্ট করি।

> db.upDateMultipleRowsDemo.insertOne({"CustomerName":"John","CustomerPurchaseAmount":500});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd6ceb06d78f205348bc626") }
> db.upDateMultipleRowsDemo.insertOne({"CustomerName":"Chris","CustomerPurchaseAmount":700});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd6ceb26d78f205348bc627") }
> db.upDateMultipleRowsDemo.insertOne({"CustomerName":"David","CustomerPurchaseAmount":50});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd6ceb36d78f205348bc628") }
> db.upDateMultipleRowsDemo.insertOne({"CustomerName":"Larry","CustomerPurchaseAmount":1900});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd6ceb46d78f205348bc629") }

সকল ডকুমেন্ট দেখানো

> db.upDateMultipleRowsDemo.find().pretty();

আউটপুট:

{ "_id" : ObjectId("5cd6ceb06d78f205348bc626"), "CustomerName" : "John", "CustomerPurchaseAmount" : 500 }
{ "_id" : ObjectId("5cd6ceb26d78f205348bc627"), "CustomerName" : "Chris", "CustomerPurchaseAmount" : 700 }
{ "_id" : ObjectId("5cd6ceb36d78f205348bc628"), "CustomerName" : "David", "CustomerPurchaseAmount" : 50 }
{ "_id" : ObjectId("5cd6ceb46d78f205348bc629"), "CustomerName" : "Larry", "CustomerPurchaseAmount" : 1900 }

বাল্ক আপডেট করা

দুইটি ডকুমেন্ট একসাথে আপডেট করি: John কে Bob করি, David-এর পরচেজ অ্যামাউন্ট বড় করি।

> var manyUpdateValue = db.upDateMultipleRowsDemo.initializeUnorderedBulkOp();
> manyUpdateValue.find({ _id: ObjectId("5cd6ceb06d78f205348bc626") }).updateOne({ $set: { "CustomerName": "Bob" } });
> manyUpdateValue.find({ _id: ObjectId("5cd6ceb36d78f205348bc628") }).updateOne({ $set: { "CustomerPurchaseAmount": 56544444 } });
> manyUpdateValue.execute();
BulkWriteResult({ "writeErrors" : [], "writeConcernErrors" : [], "nInserted" : 0, "nUpserted" : 0, "nMatched" : 2, "nModified" : 2, "nRemoved" : 0, "upserted" : [] })

ফলাফল দেখানো

> db.upDateMultipleRowsDemo.find().pretty();

আউটপুট:

{ "_id" : ObjectId("5cd6ceb06d78f205348bc626"), "CustomerName" : "Bob", "CustomerPurchaseAmount" : 500 }
{ "_id" : ObjectId("5cd6ceb26d78f205348bc627"), "CustomerName" : "Chris", "CustomerPurchaseAmount" : 700 }
{ "_id" : ObjectId("5cd6ceb36d78f205348bc628"), "CustomerName" : "David", "CustomerPurchaseAmount" : 56544444 }
{ "_id" : ObjectId("5cd6ceb46d78f205348bc629"), "CustomerName" : "Larry", "CustomerPurchaseAmount" : 1900 }

আধুনিক বিকল্প: MongoDB 3.2+ এ bulkWrite() ব্যবহার করা ভালো, যা অর্ডারড/আনঅর্ডারড দুটোই সাপোর্ট করে।

  1. একক MySQL কোয়ারিতে একাধিক সারি পাওয়ার পদ্ধতি

  2. MySQL-এ LIKE অপারেটর দিয়ে একাধিক সারি বের করা

  3. MySQL-এ একক কোয়েরিতে একাধিক সারি ইনসার্ট করা

  4. MySQL-এ একাধিক কলাম একসাথে আপডেট করা (সিঙ্গল কুয়েরি)