MongoDB में पोजिशनल $ ऑपरेटर: सरणी के मिलान वाले तत्व को अपडेट करना
पोजिशनल $ ऑपरेटर क्वेरी शर्त से मेल खाने वाली सरणी में पहले तत्व की पहचान करता है और अपडेट ऑपरेशन में उस तत्व को संदर्भित करने की अनुमति देता है। यह सरणी के विशिष्ट तत्व को अपडेट करने के लिए महत्वपूर्ण है बिना उसकी सटीक इंडेक्स जाने।
नमूना डेटा
> db.demo22.insertOne({
ProductId: 101,
ProductDetails: [
{ProductFirstPrice: '35', ProductSecondPrice: '75'},
{ProductFirstPrice: '', ProductSecondPrice: ''},
{ProductFirstPrice: '78', ProductSecondPrice: '24'}
]
});
{ "acknowledged": true, "insertedId": ObjectId("5e14c0b422d07d3b95082e70") }
क्वेरी: जहां ProductFirstPrice "35" है, वहां खाली स्ट्रिंग सेट करें
> db.demo22.update(
{"ProductDetails.ProductFirstPrice": "35"},
{$set: {"ProductDetails.$.ProductFirstPrice": ""}},
false, true
);
WriteResult({ "nMatched": 1, "nUpserted": 0, "nModified": 1 })
- क्वेरी
ProductDetailsसरणी मेंProductFirstPrice: "35"वाले तत्व को ढूंढती है। $उस मिलान वाले तत्व को संदर्भित करता है (पहला वाला)।$setउस तत्व केProductFirstPriceको""पर सेट करता है।
परिणाम
{ "ProductDetails": [
{ "ProductFirstPrice": "", "ProductSecondPrice": "75" }, // अपडेट किया गया
{ "ProductFirstPrice": "", "ProductSecondPrice": "" },
{ "ProductFirstPrice": "78", "ProductSecondPrice": "24" }
]}
केवल पहला मिलान वाला तत्व अपडेट हुआ। सीमा: पोजिशनल $ ऑपरेटर केवल पहले** मिलान वाले सरणी तत्व को अपडेट करता है। एकाधिक तत्वों को अपडेट करने के लिए $[] (सभी) या $[<identifier>] (फ़िल्टर्ड) ऑपरेटर्स (MongoDB 3.6+) का उपयोग करें।