sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB konverterar strängtyp till flyttyp

Problemet är att toFixed returnerar en String , inte ett Number . Sedan uppdaterar du bara dokumentet med en ny och annan String .

Exempel från Mongo Shell:

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

Om du vill ha ett nummer med två decimaler måste du analysera det igen med något i stil med:

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. Gruppering av dokument i MongoDB på särskilda villkor

  2. mongodb aggregeringsramgrupp + projekt

  3. Hur man installerar och konfigurerar MongoDB på Ubuntu

  4. Löjligt långsam mongoDB-fråga på liten samling i enkel men stor databas