L'aggregazione MongoDB non è autorizzata a modificare il tipo di dati esistente di determinati campi. In questo caso dovresti creare del codice di programmazione per convertire string
a int
. Controlla sotto il codice
db.collectionName.find().forEach(function(data) {
db.collectionName.update({
"_id": data._id,
"moop": data.moop
}, {
"$set": {
"PartnerID": parseInt(data.PartnerID)
}
});
})
Se le dimensioni delle tue raccolte sono superiori allo script, rallenteranno le prestazioni, poiché perfomace mongo fornisce operazioni in blocco mongo, utilizzando anche operazioni in blocco mongo aggiornato il tipo di dati
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();
Ciò riduce sostanzialmente la quantità di istruzioni delle operazioni inviate al server per l'invio solo una volta ogni 1000 operazioni in coda.