我有像这样的MongoDB文件:
reports: {
"2014-10-20": {
aA: 577.5,
aB: 537,
aC: 521,
}
在某些情况下,其中一个字典项的值是未知的。
换句话说,文档可能如下所示:
reports: {
"2014-10-20": {
aA: 577.5,
aB: 537,
aC: None,
}
当我对aC
等字段求平均值时(在上面的第二个示例中),如何确保不计算没有值(None
或类似值)的字段?
我应该将它们设置为None
,将它们留空等等吗?
答案 0 :(得分:1)
我不确定您是在讨论mongoengine中某些应用程序代码的上下文中的数学,还是只是使用MongoDB Aggregation Pipeline。
但是,在这两种情况下,您必须将empty / unknown / unset属性设置为0才能计算平均值,
如果您使用聚合管道,则可以使用 $ifNull 运算符,如果属性为
{
...
aC : null
...
}
聚合看起来像
db.test.aggregate([
{ $project: { "aC" : { $ifNull: [ "$aC", 0 ] } } },
{ $group : { _id : "key" , "avg" : {$avg : "$aC"} } }
]);