我在这种格式的json中有一些飞行数据:
{"_id":{"$oid":"587d12881603f94800054dc5"},"flight_date":{"$date":"2015-08-23T00:00:00.000Z"},"flight_number":863,"destination_city":" Baltimore, MD","delay_in_minutes":0.0,"cancelled":0.0}
我试图做的是找到取消航班比例最高的月份。我的代码按月对已取消的航班进行分组,并将每个航班除以该年度的航班总数。我想要做的是将每个月的取消航班除以该月的总航班数(取消和未取消),以便我获得适当的比率。
var size = db.flights.count();
db.flights.aggregate(
[
{
$project: {
cancelled_flights: { $eq: [ "$cancelled", 1 ] },
month: { $substr: [ "$flight_date", 5, 2 ] },
}
},
{
$match: {"cancelled_flights" : false}
},
{
$group: {
_id : "$month",
total : {$sum : 1 },
}
},
{
$project: {
Total_Cancelled : "$total",
Ratio : { $divide: [ "$total", size] }
}
},
{$sort: {"Ratio":-1}},
{ $limit : 1 }
])
我只是在学习mongo,所以请指出我的错误,我会解决它们。
答案 0 :(得分:1)
您可以使用$ cond对象
获取同一$组中已取消航班和未取消航班的总和var gulp = require('gulp');
var rename = require('gulp-rename');
gulp.task('default', function() {
return gulp.src('bower_components/openui5-*/resources/**/*')
.pipe(rename(f => f.dirname = f.dirname.replace(/openui5-.*?\//, '')))
.pipe(gulp.dest('out/'));
});
$ cond语句的工作方式类似于$ cond:[condition,如果为True,如果为False]
所以上面你会得到'如果匹配cond',1,如果没有,0
然后您可以使用这些结果进一步处理您选择的信息
小组活动将以1 $组合声明为您提供最终航班数,已取消航班总数和未取消航班总数。