MongoDB में $exists: false कंडीशन से गायब फ़ील्ड सेट करना
केवल उन डॉक्यूमेंट में फ़ील्ड जोड़ें जहां वह फ़ील्ड मौजूद नहीं है, $exists: false क्वेरी के साथ $set और multi: true उपयोग करके।
कलेक्शन बनाएं और डॉक्यूमेंट इन्सर्ट करें
> db.missingDocumentDemo.insertOne({"StudentFirstName": "Adam", "StudentLastName": "Smith"});
{ "acknowledged": true, "insertedId": ObjectId("5cd3fb1eedc6604c74817ce6") }
> db.missingDocumentDemo.insertOne({"StudentFirstName": "Carol", "StudentLastName": "Taylor"});
{ "acknowledged": true, "insertedId": ObjectId("5cd3fb29edc6604c74817ce7") }
> db.missingDocumentDemo.insertOne({"StudentFirstName": "David", "StudentLastName": "Miller", "StudentAge": 21});
{ "acknowledged": true, "insertedId": ObjectId("5cd3fb40edc6604c74817ce8") }
सभी डॉक्यूमेंट देखें
> db.missingDocumentDemo.find().pretty();
{ "_id": ObjectId("5cd3fb1eedc6604c74817ce6"), "StudentFirstName": "Adam", "StudentLastName": "Smith" }
{ "_id": ObjectId("5cd3fb29edc6604c74817ce7"), "StudentFirstName": "Carol", "StudentLastName": "Taylor" }
{ "_id": ObjectId("5cd3fb40edc6604c74817ce8"), "StudentFirstName": "David", "StudentLastName": "Miller", "StudentAge": 21 }
StudentAge फ़ील्ड केवल गायब होने पर सेट करें (23)
> db.missingDocumentDemo.update(
{"StudentAge": {$exists: false}},
{$set: {"StudentAge": 23}},
{"multi": true}
);
WriteResult({ "nMatched": 2, "nUpserted": 0, "nModified": 2 })
अपडेट के बाद चेक करें
> db.missingDocumentDemo.find().pretty();
{ "_id": ObjectId("5cd3fb1eedc6604c74817ce6"), "StudentFirstName": "Adam", "StudentLastName": "Smith", "StudentAge": 23 }
{ "_id": ObjectId("5cd3fb29edc6604c74817ce7"), "StudentFirstName": "Carol", "StudentLastName": "Taylor", "StudentAge": 23 }
{ "_id": ObjectId("5cd3fb40edc6604c74817ce8"), "StudentFirstName": "David", "StudentLastName": "Miller", "StudentAge": 21 }
व्याख्या
- Adam और Carol में StudentAge नहीं था → 23 सेट हुआ
- David में पहले से StudentAge: 21 था → अपरिवर्तित रहा
nMatched: 2- दो डॉक्यूमेंट मैच हुएnModified: 2- दो डॉक्यूमेंट बदले
आधुनिक सिंटैक्स
db.missingDocumentDemo.updateMany(
{StudentAge: {$exists: false}},
{$set: {StudentAge: 23}}
)
उपयोग के मामले
- डिफ़ॉल्ट वैल्यू बैकफिल करना
- स्कीमा माइग्रेशन में नया फ़ील्ड जोड़ना
- मौजूदा डेटा ओवरराइट किए बिना डिफ़ॉल्ट सेट करना