我的数据形式如下:
defect week Cost aaaa 1 123123 bbbb 1 2132131 cccc 1 213213 erea 1 123 asdsad 1 12343 dddd 1 123214 sadsad 1 13123 eeee 1 1313 aaaa 2 141591.45 bbbb 2 2451950.65 cccc 2 245194.95 erea 2 141.45 asdsad 2 14194.45 dddd 2 141696.1 sadsad 2 15091.45 eeee 2 1509.95 aaaa 3 261944.1825 bbbb 3 4536108.703 cccc 3 453610.6575 erea 3 261.6825 asdsad 3 26259.7325 dddd 3 262137.785 sadsad 3 27919.1825 eeee 3 2793.4075
我需要对缺陷执行聚合,但我不需要所有缺陷的汇总成本(只是少数)。我有缺陷列表
我需要进行聚合。
例如:缺陷列表将存储在变量中,如下所示:
var specificdefects = [ aaaa, bbbb, cccc, dddd, eeee ]
我的最终目标是在每周获得特定缺陷的总计成本(类似于下面)。
defect 1 2 3 aaaa 213213 123213 21313 bbbb 234534.3 135534.3 23444.3 cccc 257987.73 149087.73 25788.73 dddd 283786.503 163996.503 28367.603 eeee 312165.1533 180396.1533 31204.3633
我知道我可以将每个缺陷传递给$match
子句,然后执行聚合。但是每个缺陷都需要单独的查询(这是不可取的)。
我们可以使用单个查询执行此操作吗?如果是这样,怎么样?
答案 0 :(得分:0)
您可以使用mongo聚合,如下所示:
$(document).ready(function() {});
哪个应显示如下结果:
db.someCollection.aggregate([
{
$match: {
defect: {
$in: ['aaaa', 'bbbb', 'cccc', 'dddd', 'eeee'] // Match given defects
}
}
},
{
$group: {
_id: {
defect: '$defect', // Group on defect
week: '$week' // Also, group on week
},
sumOfCost: {
$sum: '$cost' // Sum the cost for this unique group of defect and week
}
}
}
]);