MongoDB-এ নেস্টেড অ্যারেতে নতুন ডকুমেন্ট যোগ করতে $push অপারেটর পজিশনাল $ অপারেটরের সাথে ব্যবহার করা হয়। এটি বাহ্যিক অ্যারেতে মিলে যাওয়া এলিমেন্টের নেস্টেড অ্যারেতে ডেটা পুশ করে।
নমুনা কালেকশন তৈরি
> db.nestedArrayDemo.insertOne({
"EmployeeName": "Larry",
"EmployeeSalary": 9000,
"EmployeeDetails": [
{
"EmployeeDOB": new Date('1990-01-21'),
"EmployeeDepartment": "ComputerScience",
"EmployeeProject": [
{ "Technology": "C", "Duration": 6 },
{ "Technology": "Java", "Duration": 7 }
]
}
]
});
{ "acknowledged": true, "insertedId": ObjectId("5c6d73090c3d5054b766a76e") }
ডকুমেন্ট প্রদর্শন
> db.nestedArrayDemo.find().pretty();
আউটপুট:
{
"_id": ObjectId("5c6d73090c3d5054b766a76e"),
"EmployeeName": "Larry",
"EmployeeSalary": 9000,
"EmployeeDetails": [
{
"EmployeeDOB": ISODate("1990-01-21T00:00:00Z"),
"EmployeeDepartment": "ComputerScience",
"EmployeeProject": [
{ "Technology": "C", "Duration": 6 },
{ "Technology": "Java", "Duration": 7 }
]
}
]
}
নেস্টেড অ্যারেতে $push দিয়ে নতুন ডকুমেন্ট যোগ
EmployeeDepartment: "ComputerScience" মিলে যাওয়া ডকুমেন্টের EmployeeProject অ্যারেতে নতুন প্রজেক্ট যোগ করা:
> db.nestedArrayDemo.update(
{
"_id": ObjectId("5c6d73090c3d5054b766a76e"),
"EmployeeDetails.EmployeeDepartment": "ComputerScience"
},
{
$push: {
"EmployeeDetails.$.EmployeeProject": {
"Technology": "Python",
"Duration": 4
}
}
}
);
WriteResult({ "nMatched": 1, "nUpserted": 0, "nModified": 1 })
আপডেটের পর ডকুমেন্ট যাচাই
> db.nestedArrayDemo.find().pretty();
আউটপুট:
{
"_id": ObjectId("5c6d73090c3d5054b766a76e"),
"EmployeeName": "Larry",
"EmployeeSalary": 9000,
"EmployeeDetails": [
{
"EmployeeDOB": ISODate("1990-01-21T00:00:00Z"),
"EmployeeDepartment": "ComputerScience",
"EmployeeProject": [
{ "Technology": "C", "Duration": 6 },
{ "Technology": "Java", "Duration": 7 },
{ "Technology": "Python", "Duration": 4 }
]
}
]
}
ব্যাখ্যা: কোয়েরিতে EmployeeDetails.$.EmployeeProject এ $ পজিশনাল অপারেটর বাহ্যিক EmployeeDetails অ্যারেতে EmployeeDepartment: "ComputerScience" মিলে যাওয়া এলিমেন্টকে নির্দেশ করে। তারপর তার নেস্টেড EmployeeProject অ্যারেতে নতুন অবজেক্ট পুশ করা হয়েছে।