sql >> Database >  >> NoSQL >> MongoDB

hoe string naar numerieke waarden in mongodb te converteren

MongoDB-aggregatie mag het bestaande gegevenstype van bepaalde velden niet wijzigen. In dit geval moet u programmeercode maken om string te converteren naar int . Controleer onderstaande code

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

Als uw collecties groter zijn dan het bovenstaande script de prestaties vertraagt, voor perfomace mongo biedt mongo bulkbewerkingen, waarbij mongo bulkbewerkingen ook worden geüpdatet gegevenstype

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

Dit reduceert in feite het aantal bewerkingen dat naar de server wordt verzonden tot slechts één keer per 1000 bewerkingen in de wachtrij.



  1. GSSException:geen geldige referenties verstrekt (mechanismeniveau:kan geen Kerberos-tgt vinden)

  2. 9 ClusterControl-functies die u niet zult vinden in andere hulpprogramma's voor databasebeheer

  3. Hoe u uw open source-databases kunt beveiligen met ClusterControl

  4. Wat is de meest efficiënte documentgeoriënteerde database-engine om duizenden middelgrote documenten op te slaan?