पोजिशनल ऑपरेटर ($) से ऐरे का विशिष्ट एलिमेंट बदलें
किसी ऐरे के अंदर विशिष्ट वैल्यू को नई वैल्यू से बदलने के लिए क्वेरी में उस वैल्यू को मैच करें और $set के साथ पोजिशनल $ ऑपरेटर का उपयोग करें।
उदाहरण: संग्रह बनाना
> db.replaceAnArrayFieldValueDemo.insertOne({"StudentTechnicalSubjects": ["MySQL", "SQL Server", "PL/SQL"]});
{ "acknowledged": true, "insertedId": ObjectId("5cea41e0ef71edecf6a1f68f") }
डॉक्यूमेंट देखना
> db.replaceAnArrayFieldValueDemo.find().pretty();
{
"_id": ObjectId("5cea41e0ef71edecf6a1f68f"),
"StudentTechnicalSubjects": ["MySQL", "SQL Server", "PL/SQL"]
}
ऐरे फ़ील्ड वैल्यू बदलने की क्वेरी
"SQL Server" को "MongoDB" से बदलें:
> db.replaceAnArrayFieldValueDemo.update(
{"StudentTechnicalSubjects": "SQL Server"},
{ $set: {'StudentTechnicalSubjects.$': "MongoDB"} }
);
WriteResult({ "nMatched": 1, "nUpserted": 0, "nModified": 1 })
परिणाम जांचना
> db.replaceAnArrayFieldValueDemo.find().pretty();
{
"_id": ObjectId("5cea41e0ef71edecf6a1f68f"),
"StudentTechnicalSubjects": ["MySQL", "MongoDB", "PL/SQL"]
}
पोजिशनल $ ने क्वेरी शर्त StudentTechnicalSubjects: "SQL Server" से मेल खाने वाले ऐरे एलिमेंट (दूसरा एलिमेंट) को पहचाना और उसे "MongoDB" से बदल दिया।
नोट: यदि ऐरे में डुप्लिकेट वैल्यूज़ हैं, तो केवल पहला मेल खाने वाला एलिमेंट अपडेट होता है। सभी मेल खाने वाले एलिमेंट्स अपडेट करने के लिए
updateManyके साथarrayFilters(MongoDB 3.6+) का उपयोग करें।