gpt4 book ai didi

MongoDB 将字符串类型转换为浮点类型

转载 作者:可可西里 更新时间:2023-11-01 09:10:36 25 4
gpt4 key购买 nike

按照此处的建议 MongoDB: How to change the type of a field?我尝试更新我的集合以更改字段类型及其值。

这是更新查询

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

完成上述查询后,当我运行以下命令时

db.MyCollection.find({"ProjectID" : 44},{Cost:1})

我仍然有 Cost 字段作为字符串。

{
"_id" : ObjectId("576919b66bab3bfcb9ff0915"),
"Cost" : "11531.23"
}

/* 7 */
{
"_id" : ObjectId("576919b66bab3bfcb9ff0916"),
"Cost" : "13900.64"
}

/* 8 */
{
"_id" : ObjectId("576919b66bab3bfcb9ff0917"),
"Cost" : "15000.86"
}

我在这里做错了什么?

这是示例文档

/* 2 */
{
"_id" : ObjectId("576919b66bab3bfcb9ff0911"),
"Cost" : "$7,100.00"
}

/* 3 */
{
"_id" : ObjectId("576919b66bab3bfcb9ff0912"),
"Cost" : "$14,500.00"
}

/* 4 */
{
"_id" : ObjectId("576919b66bab3bfcb9ff0913"),
"Cost" : "$12,619.00"
}

/* 5 */
{
"_id" : ObjectId("576919b66bab3bfcb9ff0914"),
"Cost" : "$9,250.00"
}

最佳答案

问题是 toFixed 返回一个 String,而不是一个 Number。然后你只是用一个新的、不同的 String 更新文档。

来自 Mongo Shell 的示例:

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

如果你想要一个 2 位小数,你必须用类似的东西再次解析它:

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

关于MongoDB 将字符串类型转换为浮点类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37942844/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com