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

MongoDB konverterer strengtype til flydende type

Problemet er, at toFixed returnerer en String , ikke et Number . Så er du bare ved at opdatere dokumentet med en ny og anderledes String .

Eksempel fra Mongo Shell:

> number = 2.3431
2.3431
> number.toFixed(2)
2.34
> typeof number.toFixed(2)
string

Hvis du vil have et tal med 2 decimaler, skal du parse det igen med noget som:

db.MyCollection.find({"ProjectID" : 44, "Cost": {$exists: true}}).forEach(function(doc){
  if(doc.Cost.length > 0){
    var newCost = doc.Cost.replace(/,/g, '').replace(/\$/g, '');
    var costString = parseFloat(newCost).toFixed(2);
    doc.Cost = parseFloat(costString);
    db.MyCollection.save(doc);
  } // End of If Condition
}) // End of foreach


  1. Express.js/Mongoose brugerroller og tilladelser

  2. Hent kun det forespurgte element i et objektarray i MongoDB-samlingen

  3. Aggregationssum i Spring Data MongoDB

  4. Kører MongoDB Compass på Mac