MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

MongoDB konwertuje typ ciągu na typ zmiennoprzecinkowy

Problem polega na tym, że toFixed zwraca String , a nie Number . Wtedy po prostu aktualizujesz dokument o nowy i inny String .

Przykład z Mongo Shell:

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

Jeśli chcesz podać liczbę z 2 miejscami po przecinku, musisz ją ponownie przeanalizować za pomocą czegoś takiego:

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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak zmienić układ kart i list, takich jak Trello?

  2. Jak wykonać zapytanie tablicowe identyfikatorów w Mongoose?

  3. MongoDB z poddokumentami limitu Mongoose

  4. MongoDB:Co to jest pula połączeń i limit czasu?

  5. Zapytanie MongoDump z BinData