MongoDB में बूलियन फील्ड को टॉगल (फ्लिप) करना
MongoDB में बूलियन फील्ड की वैल्यू को टॉगल (true ↔ false) करने के लिए डॉक्यूमेंट खोजें, फिर $set के साथ नॉट (!) ऑपरेटर का उपयोग करें।
उदाहरण: कलेक्शन और डॉक्यूमेंट्स बनाना
> db.toggleDemo.insertOne({"CustomerName":"John Smith","CustomerAge":28,"isMarried":true});
{ "acknowledged" : true, "insertedId" : ObjectId("5cc7be138f9e6ff3eb0ce43b") }
> db.toggleDemo.insertOne({"CustomerName":"David Miller","CustomerAge":25,"isMarried":false});
{ "acknowledged" : true, "insertedId" : ObjectId("5cc7be2e8f9e6ff3eb0ce43c") }
सभी डॉक्यूमेंट्स देखना
> db.toggleDemo.find().pretty();
आउटपुट:
{ "_id" : ObjectId("5cc7be138f9e6ff3eb0ce43b"), "CustomerName" : "John Smith", "CustomerAge" : 28, "isMarried" : true }
{ "_id" : ObjectId("5cc7be2e8f9e6ff3eb0ce43c"), "CustomerName" : "David Miller", "CustomerAge" : 25, "isMarried" : false }
टॉगल क्वेरी: David Miller का isMarried फ्लिप करना
> var value = db.toggleDemo.findOne({CustomerName:"David Miller"});
> db.toggleDemo.update({CustomerName:"David Miller"}, {$set: {isMarried: !value.isMarried}});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
परिणाम वेरिफाई करना
> db.toggleDemo.find().pretty();
आउटपुट:
{ "_id" : ObjectId("5cc7be138f9e6ff3eb0ce43b"), "CustomerName" : "John Smith", "CustomerAge" : 28, "isMarried" : true }
{ "_id" : ObjectId("5cc7be2e8f9e6ff3eb0ce43c"), "CustomerName" : "David Miller", "CustomerAge" : 25, "isMarried" : true }
ध्यान दें: यह दो-स्टेप प्रोसेस है (पहले पढ़ें, फिर अपडेट)। एटॉमिक टॉगल के लिए MongoDB 4.2+ में $set के साथ एग्रीगेशन पाइपलाइन का उपयोग करें:
db.toggleDemo.updateOne(
{ CustomerName: "David Miller" },
[{ $set: { isMarried: { $not: "$isMarried" } } }]
);