MongoDB-এ অ্যারের নির্দিষ্ট ইনডেক্সে ভেরিয়েবল ব্যবহার করে মান আপডেট করতে ডাইনামিক কী (dynamic key) কনস্ট্রাক্ট করতে হয়।
সিনট্যাক্স
var yourIndexVariableName = yourIndexValue,
anyVariableName = { "$set": {} };
anyVariableName["$set"]["yourFieldName." + yourIndexVariableName] = "yourValue";
db.yourCollectionName.update({ "_id": yourObjectId }, anyVariableName);
নমুনা ডেটা তৈরি করা
updateByVariableDemo কালেকশনে একটি ডকুমেন্ট ইনসার্ট করি যাতে StudentSubjects অ্যারে থাকে।
> db.updateByVariableDemo.insertOne({"StudentSubjects":["MySQL","Java","SQL Server","PL/SQL"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd553c37924bb85b3f4893a") }
ডকুমেন্ট দেখানো
> db.updateByVariableDemo.find().pretty();
আউটপুট:
{
"_id" : ObjectId("5cd553c37924bb85b3f4893a"),
"StudentSubjects" : [ "MySQL", "Java", "SQL Server", "PL/SQL" ]
}
ভেরিয়েবল ইনডেক্স দিয়ে আপডেট করা
ইনডেক্স ১ (দ্বিতীয় উপাদান) "Java" কে "MongoDB" করতে:
> var indexValue = 1,
valueToUpdate = { "$set": {} };
> valueToUpdate["$set"]["StudentSubjects." + indexValue] = "MongoDB";
MongoDB
> db.updateByVariableDemo.update(
{ "_id": ObjectId("5cd553c37924bb85b3f4893a") },
valueToUpdate
);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
ফলাফল দেখানো
> db.updateByVariableDemo.find().pretty();
আউটপুট:
{
"_id" : ObjectId("5cd553c37924bb85b3f4893a"),
"StudentSubjects" : [ "MySQL", "MongoDB", "SQL Server", "PL/SQL" ]
}
টিপস: এই প্যাটার্ন রানটাইমে ইনডেক্স নির্ণয় করার সময় খুব কাজে লাগে। MongoDB 4.2+ এ updateOne এর সাথে অ্যারে ফিল্টারও ব্যবহার করা যায়।