sql >> Base de Datos >  >> NoSQL >> MongoDB

cómo convertir cadenas a valores numéricos en mongodb

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.