La agregación de MongoDB no permite cambiar el tipo de datos existente de campos dados. En este caso, debe crear algún código de programación para convertir string
a int
. Verifique el código a continuación
db.collectionName.find().forEach(function(data) {
db.collectionName.update({
"_id": data._id,
"moop": data.moop
}, {
"$set": {
"PartnerID": parseInt(data.PartnerID)
}
});
})
Si el tamaño de sus colecciones es mayor que el de la secuencia de comandos anterior, se ralentizará el rendimiento, para realizar mongo proporcione operaciones masivas de mongo, utilizando operaciones masivas de mongo también actualice el tipo de datos
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();
Básicamente, esto reduce la cantidad de declaraciones de operaciones enviadas al servidor a solo enviar una vez cada 1000 operaciones en cola.