gpt4 book ai didi

mongodb - 在MongoDB投影中将字符串转换为数字

转载 作者:行者123 更新时间:2023-12-01 07:01:01 26 4
gpt4 key购买 nike

我有一个文档集合,这些文档的值已知为数字,但存储为字符串。更改字段的类型是我无法控制的,但是我想在聚合中使用该字段(例如,对它进行平均)。

看来我应该在分组之前使用投影,并在该投影中根据需要转换字段。我似乎无法完全正确地使用语法-我尝试的所有操作都给了我NaN,或者聚合的下一步中缺少新字段。

$project: {
value: '$value',
valueasnumber: ????
}

给出上面的非常简单的示例,其中所有文档中$ value的内容都是字符串类型,但将解析为数字,我该如何使valueasnumber成为一个新的(不存在的)字段,且该字段的类型为double版本中的$ value吗?

我已经尝试过以下示例(以及大约十二种类似的事情):
{ $add: new Number('$value').valueOf() }
new Number('$value').valueOf()

我是否完全将错误的树吠叫?任何帮助将不胜感激!

(要100%清楚,以下是我想如何使用新字段)。
$group {
score: {
$avg: '$valueasnumber'
}
}

最佳答案

我能想到的一种方法是使用mongo shell javascript通过在现有文档或新文档中添加新的数字字段,valuesasnumber(现有字符串“值”字段的数字转换)来修改文档。然后使用此数字字段进行进一步的计算。

db.numbertest.find().forEach(function(doc) {
doc.valueasnumber = new NumberInt(doc.value);
db.numbertest.save(doc);
});

使用valueasnumber字段进行数值计算
db.numbertest.aggregate([{$group : 
{_id : null,
"score" : {$avg : "$valueasnumber"}
}
}]);

关于mongodb - 在MongoDB投影中将字符串转换为数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25983228/

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