sql >> Database teknologi >  >> NoSQL >> MongoDB

hvordan man konverterer streng til numeriske værdier i mongodb

MongoDB-aggregering har ikke lov til at ændre eksisterende datatype for givne felter. I dette tilfælde bør du oprette noget programmeringskode for at konvertere string til int . Tjek nedenstående kode

db.collectionName.find().forEach(function(data) {
    db.collectionName.update({
        "_id": data._id,
        "moop": data.moop
    }, {
        "$set": {
            "PartnerID": parseInt(data.PartnerID)
        }
    });
})

Hvis din samlingsstørrelse er mere end ovenstående script vil sænke ydeevnen, for perfomace mongo leverer mongo bulk operationer, bruger mongo bulk operationer også opdateret datatype

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();

Dette reducerer dybest set mængden af ​​operationsudsagn, der sendes til serveren, til kun at sende én gang for hver 1000 handlinger i kø.



  1. Dårlig opslagssammenlægningsydelse

  2. MongoDb:Fordelen ved at bruge ObjectID i forhold til en streng, der indeholder et Id?

  3. Hvordan indstiller jeg adgangskoden til Redis?

  4. Forespørgsel efter dokumenter, hvor matrixstørrelsen er større end 1