我需要计算按周和年分组的一些字段的总和,例如 当 dt_extract 是:02-01-2017:所以星期的数量是1和2017年,但我的查询问题我不确切知道2017年或2016年i juste控制一周,但我需要得到一周的数字,也需要一年来计算我的总和。
var group1 = {
$group :{
_id:{
"$isoWeek": "$dt_extract"},
"Sum_Reliability_Rate_Numerator":{
"$sum":"$mlf16_txfiabnum"
}
}
}
var sort ={
$sort : { _id : -1 }
}
}
db.mplf_tmp_v3.aggregate([group1,sort])
这个查询它的工作但我无法找到哪一年(在我的收藏中我有2016年,2017年,很快我将获得2018年)
我做了这个请求,但我没有结果
var match = {
$match : {
"dt_extract": {"$in":
[
"2017-01-02",
"2017-12-04"
]
}
}
}
var group = {
$group :{
"_id":{
"$isoweek" :"$dt_extract" ,
},
"Sum_Reliability_Rate_Numerator":{
"$sum":"$mlf16_txfiabnum"
}
}
}
db.supplierswarnings.aggregate([match,group])
此处为此集合的文档示例
{
"_id" : ObjectId("5a2813a32539c8990f725a8f"),
"dt_extract" : ISODate("2017-05-14T00:00:00.000+02:00"),
"mlf16_annee" : "2017",
"mlf16_semind" : "19",
"mlf16_semcal" : "19",
"mlf16_cptmag" : "0000900156",
"mlf16_codraft" : "02",
"mlf16_cptfou" : "0000115768",
"mlf16_codadrdl" : "01",
"mlf16_codadres" : "01",
"mlf16_grpges" : "4P",
"mlf16_clasges" : "2",
"mlf16_txservnum" : 1,
"mlf16_txservden" : 13,
"mlf16_txdocnum" : 0,
"mlf16_txdocden" : 1,
"mlf16_txfiabnum" : 0,
"mlf16_txfiabden" : 0,
"mlf16_refret2j" : 1,
"mlf16_refret7j" : 1,
"mlf16_refret21j" : 0,
"mlf16_natcouv" : "0",
"mlf16_nbligndiff" : 0,
"mlf16_nbrefdiff" : 0,
"mlf16_cptfou_six" : "115768",
"dt_year" : 2017
}
答案 0 :(得分:0)
var project = {
$project:{
correctWeek:{
$cond:[
{$lt:[{ $isoWeekYear:"$dt_extract"},{$year:"$dt_extract"}]},
1,
{$isoWeek:"$dt_extract"}
]
}
}
}
var group = {
$group :{
"_id":"$correctWeek",
"Sum_Reliability_Rate_Numerator":{
"$sum":"$mlf16_txfiabnum"
}
}
}
db.supplierswarnings.aggregate([match,project,group])
或 而不是在你的问题中使用$ isoWeek为什么不使用$ week
var group = {
$group :{
"_id":{$week:"$dt_extract"},
"Sum_Reliability_Rate_Numerator":{
"$sum":"$mlf16_txfiabnum"
}
}
}
答案 1 :(得分:0)
HTMLMediaElement