MongoDB में $pull और $ne का उपयोग करके ऐरे से एलिमेंट्स हटाना
MongoDB में किसी ऐरे से उन एलिमेंट्स को हटाने के लिए जो एक शर्त नहीं पूरी करते, $pull के साथ $ne (नॉट इक्वल) ऑपरेटर का उपयोग करें।
उदाहरण: संग्रह और दस्तावेज़ बनाना
> db.demo410.insertOne(
{
details: [
{isMarried:false},
{isMarried:true},
{isMarried:false},
{isMarried:"Chris"}
]
}
);
{ "acknowledged" : true, "insertedId" : ObjectId("5e70efc515dc524f70227681") }
दस्तावेज़ देखना (अपडेट से पहले)
> db.demo410.find();
आउटपुट:
{ "_id" : ObjectId("5e70efc515dc524f70227681"), "details" : [ { "isMarried" : false }, { "isMarried" : true }, { "isMarried" : false }, { "isMarried" : "Chris" } ] }
isMarried != true वाले सभी एलिमेंट्स हटाना
> db.demo410.updateMany(
{ "details": { "$elemMatch": { "isMarried": { "$ne": true } } } },
{ "$pull": { "details": { "isMarried": { "$ne": true } } } }
)
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
अपडेट के बाद दस्तावेज़ देखना
> db.demo410.find();
आउटपुट:
{ "_id" : ObjectId("5e70efc515dc524f70227681"), "details" : [ { "isMarried" : true } ] }
व्याख्या:
- क्वेरी फिल्टर:
{"details": {"$elemMatch": {"isMarried": {"$ne": true}}}}- कम से कम एक ऐसा एलिमेंट वाले दस्तावेज़ ढूंढता है जहां isMarried true नहीं है - अपडेट:
{$pull: {"details": {"isMarried": {"$ne": true}}}}- सभी एलिमेंट्स हटाता है जहां isMarried true नहीं है - परिणाम: केवल
{isMarried: true}बचता है
महत्वपूर्ण अंतर:
| ऑपरेटर | व्यवहार |
|---|---|
$pull | शर्त से मेल खाने वाले सभी एलिमेंट्स हटाता है |
$pop | पहला (-1) या अंतिम (1) एलिमेंट हटाता है |
$pullAll | निर्दिष्ट मानों के सभी घटनाक्रम हटाता है |
सावधानी: क्वेरी फिल्टर और $pull शर्त समान होनी चाहिए ताकि सही दस्तावेज़ अपडेट हों।