insert() ব্যবহার করে কাস্টম _id
MongoDB-তে insert() দিয়ে কাস্টম _id দিয়ে ডকুমেন্ট ইনসার্ট করা যায়। যদি একই _id দিয়ে আবার ইনসার্ট করা হয়, তবে ডুপ্লিকেট কি এরর (E11000) দেওয়া হয়।
উদাহরণ: কাস্টম _id দিয়ে ইনসার্ট
> db.customIdDemo.insert({ "_id": 1, "StudentName": "John" });
WriteResult({ "nInserted" : 1 })
> db.customIdDemo.insert({ "_id": 1, "StudentName": "Carol" });
WriteResult({
"nInserted" : 0,
"writeError" : {
"code" : 11000,
"errmsg" : "E11000 duplicate key error collection: admin.customIdDemo index: _id_ dup key: { : 1.0 }"
}
})
> db.customIdDemo.insert({ "_id": 2, "StudentName": "Carol" });
WriteResult({ "nInserted" : 1 })
> db.customIdDemo.insert({ "_id": 2, "StudentName": "Carol" });
// আবার E11000 duplicate key error
> db.customIdDemo.insert({ "_id": 3, "StudentName": "Chris" });
WriteResult({ "nInserted" : 1 })
ফাইনাল ডেটা
> db.customIdDemo.find().pretty();
আউটপুট:
{ "_id" : 1, "StudentName" : "John" }
{ "_id" : 2, "StudentName" : "Carol" }
{ "_id" : 3, "StudentName" : "Chris" }
আপসার্ট প্যাটার্ন (update + upsert: true)
যদি "ইনসার্ট যদি না থাকে, আপডেট যদি থাকে" চান, তবে update() সাথে upsert: true ব্যবহার করুন (insert() দিয়ে আপসার্ট হয় না):
db.customIdDemo.update(
{ "_id": 1 },
{ $set: { "StudentName": "NewName" } },
{ upsert: true }
);
সারসংক্ষেপ: insert() কাস্টম _id নেয় কিন্তু ডুপ্লিকেটে এরর দেয়। আপসার্টের জন্য update({_id:...}, {$set:...}, {upsert:true}) ব্যবহার করুন।