MongoDB एकत्रीकरण को दिए गए फ़ील्ड के मौजूदा डेटा प्रकार को बदलने की अनुमति नहीं है। इस मामले में आपको string
. कन्वर्ट करने के लिए कुछ प्रोग्रामिंग कोड बनाना चाहिए करने के लिए int
. नीचे दिए गए कोड की जाँच करें
db.collectionName.find().forEach(function(data) {
db.collectionName.update({
"_id": data._id,
"moop": data.moop
}, {
"$set": {
"PartnerID": parseInt(data.PartnerID)
}
});
})
यदि आपके संग्रह का आकार अधिक है तो उपरोक्त स्क्रिप्ट प्रदर्शन को धीमा कर देगी, परफॉमेस मोंगो के लिए मोंगो बल्क ऑपरेशंस प्रदान करते हैं, मोंगो बल्क ऑपरेशंस का उपयोग करके डेटा प्रकार भी अपडेट किया जाता है
var bulk = db.collectionName.initializeOrderedBulkOp();
var counter = 0;
db.collectionName.find().forEach(function(data) {
var updoc = {
"$set": {}
};
var myKey = "PartnerID";
updoc["$set"][myKey] = parseInt(data.PartnerID);
// queue the update
bulk.find({
"_id": data._id
}).update(updoc);
counter++;
// Drain and re-initialize every 1000 update statements
if (counter % 1000 == 0) {
bulk.execute();
bulk = db.collectionName.initializeOrderedBulkOp();
}
})
// Add the rest in the queue
if (counter % 1000 != 0) bulk.execute();
यह मूल रूप से सेवर को भेजे गए ऑपरेशन स्टेटमेंट की मात्रा को कम कर देता है, केवल प्रत्येक 1000 कतारबद्ध संचालन में एक बार भेजने के लिए।