【发布时间】:2020-05-05 14:56:31
【问题描述】:
存储在 mongoDB 中的示例数据::
TotalStudent,TotalPresent 都是字符串。
[{'_id':'12sdsd','TotalStudent:'1,233,273','TotalPresent':'23'},
{'_id':'22fdf','TotalStudent:'2,445,232','TotalPresent':'32'}]
Node js:: 我尝试聚合并给我学生总数和在场总数的输出。
P.S.:我使用 mongoose 从 mongoDB 获取数据。
covid_data.aggregate([{
$group:{
_id:"",
TotalStudents:{$sum:{$toInt:"$TotalStudents"}},
TotalPresent:{$sum:{$toInt:"$TotalPresent"}}
}
}], (err,docs)=>{
if(err){
console.log(err);
return res.status(500).send(err);
}
else{
console.log(docs);
res.send(docs);
}
});
它给我的错误是:
“在没有 onError 值的情况下无法解析 $convert 中的数字‘1,233,273’:解析 1,233,273 时数字错误 \",\"。"codeName":"ConversionFailure"
编辑1
编辑样本数据的 TotalStudents 数字格式。因为它还包含,。 以前我未能将 TotalStudents 包含的数字包含为“1,233,273”和“2,445,232”。因为在尝试转换时出现了错误。
任何帮助将不胜感激。干杯!!
【问题讨论】:
-
数据类型很重要,在创建集合时使用数字而不是字符串,至少在数据库实例中是这样。如果您的数据以这种方式出现,您在导入时始终可以以不同的方式处理它。如果你不这样做,你最终会遇到解决方法的世界末日而不是查询。
-
问题是我从网站上抓取数据并从那里获取数据。并将数据存储在 mongoDb 中。因此我无法控制它保存数据的类型
-
我非常了解您,但如果您想要可靠的结果,您的数据必须经过清理。如果您所做的是“一次性”操作,您可以冒险跳过它,但是......如果您的数据是增量的,则可能需要一个修复一致性的层。
-
@Ajax 如果您废弃了数据,这意味着您可以控制数据如何进入数据库。否则,您可能需要遍历数据并在应用层将其更新为适当的格式。
-
谢谢大家的回复.....我会将我的数据更新为适当的格式,这是最佳实践。我会接受@whoami 的回答,因为它适用于格式正确的数据。
标签: mongodb mongoose mongodb-query aggregation-framework