MongoDB में $addToSet का उपयोग करके ऐरे में एलिमेंट्स जोड़ना
$addToSet ऑपरेटर एक मान को ऐरे में केवल तभी जोड़ता है जब वह पहले से मौजूद नहीं है, जिससे डुप्लिकेट रोके जाते हैं। यह टैग्स, श्रेणियों, या अद्वितीय आइटम्स की सूचियों को बनाए रखने के लिए आदर्श है।
नमूना डेटा बनाना
> db.pushElements.insertOne({"Comments":["Good","Awesome","Nice"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd682597924bb85b3f48953") }
अपडेट से पहले डॉक्यूमेंट देखना
> db.pushElements.find().pretty();
आउटपुट:
{
"_id" : ObjectId("5cd682597924bb85b3f48953"),
"Comments" : [ "Good", "Awesome", "Nice" ]
}
नया यूनिक एलिमेंट जोड़ना
> db.pushElements.update(
{ _id: ObjectId("5cd682597924bb85b3f48953") },
{ "$addToSet": { "Comments": "Cool" } },
{ upsert: true }
);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
परिणाम वेरिफाई करना
> db.pushElements.find().pretty();
आउटपुट:
{
"_id" : ObjectId("5cd682597924bb85b3f48953"),
"Comments" : [ "Good", "Awesome", "Nice", "Cool" ]
}
$addToSet बनाम $push
| ऑपरेटर | व्यवहार | उपयोग करें जब |
|---|---|---|
$addToSet | केवल तभी जोड़ता है जब मान अनुपस्थित हो; डुप्लिकेट रोकता है | यूनिक मानों का सेट बनाए रखना (टैग्स, आईडी) |
$push | हमेशा जोड़ता है; डुप्लिकेट अनुमति देता है | लॉग्स, इतिहास, या क्रमबद्ध संग्रह जहां डुप्लिकेट मान्य हैं |
प्रत्येक के साथ मल्टीपल मान जोड़ना
एक साथ कई यूनिक मान जोड़ने के लिए:
db.collection.update(
{ _id: ObjectId("...") },
{ $addToSet: { Comments: { $each: ["Great", "Excellent", "Cool"] } } }
);
मुख्य बिंदु
- ऐरे में डुप्लिकेट रोकने के लिए
$addToSetका उपयोग करें। - एक ही ऑपरेशन में कई मान जोड़ने के लिए
$eachके साथ संयोजित करें। upsert: trueविकल्प यदि डॉक्यूमेंट मौजूद नहीं है तो उसे बनाता है (सावधानी से उपयोग करें)।