MongoDB में JavaScript का उपयोग करके सरणी तत्वों का क्रम बदलना
MongoDB में सरणी तत्वों का क्रम बदलने के लिए कोई सीधा ऑपरेटर नहीं है, लेकिन आप find() के साथ forEach() और update() का उपयोग करके JavaScript लॉजिक लागू कर सकते हैं।
नमूना डेटा बनाना
> db.demo301.insertOne({"Name":["Chris","David","Bob"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e4d6ff55d93261e4bc9ea51") }
सभी दस्तावेज़ प्रदर्शित करना
> db.demo301.find();
आउटपुट:
{ "_id" : ObjectId("5e4d6ff55d93261e4bc9ea51"), "Name" : [ "Chris", "David", "Bob" ] }
सरणी के पहले दो तत्वों को स्वैप करने की क्वेरी
> db.demo301.find({}, { Name : 1 }).forEach(function(n) {
var t = n.Name[0];
n.Name[0] = n.Name[1];
n.Name[1] = t;
db.demo301.update({ _id: n._id }, { $set: { Name: n.Name } });
})
अपडेट के बाद दस्तावेज़ प्रदर्शित करना
> db.demo301.find();
आउटपुट:
{ "_id" : ObjectId("5e4d6ff55d93261e4bc9ea51"), "Name" : [ "David", "Chris", "Bob" ] }
व्याख्या
find({}, { Name : 1 })- केवलNameफ़ील्ड (और _id) प्राप्त करें।forEach()- प्रत्येक दस्तावेज़ पर पुनरावृति करें।- JavaScript स्वैप लॉजिक: अस्थायी चर
tमें पहला तत्व स्टोर करें, दूसरा पहले पर असाइन करें, फिरtको दूसरे पर। $setके साथupdate()- संशोधित सरणी को डेटाबेस में सहेजें।
सावधानियां
- यह दृष्टिकोण केवल MongoDB शेल में काम करता है।
- बड़े संग्रहों के लिए धीमा हो सकता है (प्रत्येक दस्तावेज़ के लिए अलग अपडेट)।
- उत्पादन में, एप्लिकेशन कोड में सरणी संशोधन करना बेहतर है।
- MongoDB 5.2+ में
$arrayElemAtऔर$setके साथ aggregation pipeline का उपयोग करके एकल अपडेट में किया जा सकता है।