我是 mongoDB 新手。我以字符串形式获取数据,但我想将其解析为十进制/ float
。
我发现编写了这段代码,但它似乎不起作用。这是我的代码,它将 - 替换为 00,* 替换为“”,并将其解析为 float 。它没有给出错误,但给出了 parseFloat(doc).toFixed(2)
。
db.behuizingen.find().forEach(function(doc)
{
var price = doc.Prijs.replace('€', ''); // it may be vary for your other document
price = price.replace('-', '00');
price = price.replace('*', '');
doc.Prijs = Number(price);
parseFloat(doc).toFixed(2)
db.behuizingen.update({_id : doc._id} , doc;
})
提前致谢。
最佳答案
你做错了。首先进行转换,shell 的 Number()
函数与之无关。因此,将该行替换为继续:
doc.Prijs = parseFloat(parseFloat(price).toFixed(2));
db.moederborden.update({_id : doc._id} , doc );
但也要小心。在第二个参数所在的地方使用 .update()
将会用 doc
的内容“替换”整个文档。
您可能想这样做:
doc.Prijs = parseFloat(parseFloat(price).toFixed(2));
var update = { "$set": {} };
Object.keys(doc).each(function(key) {
update["$set"][key] = doc[key];
});
db.moederborden.update({_id : doc._id} , update );
它使用 $set
运算符,以便在写入数据库时不会覆盖 doc
对象中未引用的任何现有值。
关于javascript - Mongodb 将字符串解析为十进制/ float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27861586/