Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MongoDB

MongoDB क्वेरी: ऐरे में वैल्यू कैसे रिप्लेस करें?

MongoDB में पोजिशनल $ ऑपरेटर के साथ $set का उपयोग करके ऐरे एलिमेंट को रिप्लेस करना

एक ऐरे के अंदर एक विशिष्ट एलिमेंट को अपडेट करने के लिए, क्वेरी से मेल खाने वाले ऐरे एलिमेंट को संदर्भित करने के लिए $set के साथ पोजिशनल $ ऑपरेटर का उपयोग करें।

नमूना डेटा बनाना

> db.replaceValueInArrayDemo.insertOne({"StudentScores":[45,56,78]});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd7f0421a844af18acdffb7") }
> db.replaceValueInArrayDemo.insertOne({"StudentScores":[33,90,67]});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd7f0521a844af18acdffb8") }

सभी डॉक्यूमेंट्स देखना

> db.replaceValueInArrayDemo.find().pretty();

आउटपुट:

{ "_id" : ObjectId("5cd7f0421a844af18acdffb7"), "StudentScores" : [ 45, 56, 78 ] }
{ "_id" : ObjectId("5cd7f0521a844af18acdffb8"), "StudentScores" : [ 33, 90, 67 ] }

ऐरे में मान 45 को 99 से रिप्लेस करना

> db.replaceValueInArrayDemo.update(
  { _id: ObjectId("5cd7f0421a844af18acdffb7"), StudentScores: 45 },
  { $set: { 'StudentScores.$': 99 } }
);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

परिणाम वेरिफाई करना

> db.replaceValueInArrayDemo.find().pretty();

आउटपुट:

{ "_id" : ObjectId("5cd7f0421a844af18acdffb7"), "StudentScores" : [ 99, 56, 78 ] }
{ "_id" : ObjectId("5cd7f0521a844af18acdffb8"), "StudentScores" : [ 33, 90, 67 ] }

व्याख्या

  • { _id: ..., StudentScores: 45 } - विशिष्ट डॉक्यूमेंट ढूंढता है और ऐरे में मान 45 वाले एलिमेंट से मेल खाता है।
  • StudentScores.$ - पोजिशनल $ क्वेरी शर्त (StudentScores: 45) से मेल खाने वाले ऐरे में पहले एलिमेंट को संदर्भित करता है।
  • $set - उस एलिमेंट को नए मान (99) से प्रतिस्थापित करता है।

महत्वपूर्ण सीमाएं

  • पोजिशनल $ केवल पहले मिलान करने वाले ऐरे एलिमेंट को अपडेट करता है।
  • यदि ऐरे में डुप्लिकेट मान हैं (उदाहरण के लिए, [45, 45, 78]), केवल पहला 45 बदल जाता है।
  • सभी मिलान करने वाले एलिमेंट्स को अपडेट करने के लिए, MongoDB 3.6+ में arrayFilters के साथ फिल्टर्ड पोजिशनल ऑपरेटर $[identifier] का उपयोग करें।

ArrayFilters के साथ आधुनिक दृष्टिकोण (MongoDB 3.6+)

db.collection.updateOne(
  { _id: ObjectId("...") },
  { $set: { "StudentScores.$[elem]": 99 } },
  { arrayFilters: [ { "elem": 45 } ] }
);

यह ऐरे में मान 45 वाले सभी** एलिमेंट्स को अपडेट करता है।

  1. MongoDB क्वेरी: आईडी को सरणी फ़ील्ड मान से बाहर कैसे करें MongoDB क्वेरी: आईडी को सरणी फ़ील्ड मान से बाहर कैसे करें

    इसके लिए $not के साथ $in ऑपरेटर का उपयोग करें। आइए एक संग्रह बनाते हैं: [ { id: 101, subjectid: [ 102 ] }, { id: 102, subjectid: [ 102 ] } ] सभी दस्तावेज़ देखने के लिए: db.collection.find() आउटपुट: [ { _id: ObjectId(5a934e000102030405000000),

  1. - MongoDB कलेक्शन को ऐरे वैल्यू द्वारा सॉर्ट करें

    MongoDB कलेक्शन को ऐरे वैल्यू द्वारा सॉर्ट करने के लिए, $sort के साथ aggregate() का उपयोग करें। आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo577.insertOne({ student: { details: [ { Name:Chris, Score:45 }, { Name:Bob, Score:33 }, { Name:Davi

  1. - MongoDB में सरणी क्वेरी करके विशिष्ट मान प्राप्त करें

    सरणी से विशिष्ट मान प्राप्त करने के लिए aggregate() के साथ $project का उपयोग करें। आइए एक कलेक्शन बनाते हैं: > db.demo761.insertOne( { details: [ { student: { FullName: Chris Brown } } ] } ); { acknowledged : true, insertedId : ObjectId(5eb034d15637cd592b2a4af1) } > db.demo761.insertOne( { de