1
로 집계 프로젝트를 몽고 나는 다음과 같은 몽고 집계 funnction 있습니다PHP는 PHP에서 날짜 필드
array(
array(
'$match' => array(
"i" => array('$in' => $valRefId),
"date" => array('$gt'=> $mongotimestart , '$lte'=> $mongotimeend),
),
),
array(
'$project' => array(
"i" => '$i',
"v" => '$v',
"datumpje" => array('$add'=>array('$date',$timezone_date)),
"year" => array('$year' =>array('$add'=>array('$date',$timezone_date))),
"month" => array('$month'=>array('$add'=>array('$date',$timezone_date))),
"day" => array('$dayOfMonth'=>array('$add'=>array('$date',$timezone_date))),
"hour" => array('$hour'=> array('$add'=>array('$date',$timezone_date))),
)
),
array(
'$group' => array(
'_id' => array(
"valRefId" => '$i',
"year" => '$year',
"month" => '$month',
"day" => '$day',
"hour" => '$hour',
),
"MaxValue" => array('$max' => '$v'),
"MinValue" => array('$min' => '$v'),
"Gemiddelde" => array('$avg' => '$v'),
"Aantal" => array('$sum' => 1),
)
),
array(
'$sort' => array(
"_id.valRefId" => 1,
"_id.year" => 1,
"_id.month" => 1,
"_id.day" => 1,
"_id.hour" => 1,
)
),
array(
'$project' => array(
"date" => array(
'$concat' => array(array('$substr' => array('$_id.year',0,4)),
"-",
array('$substr' => array('$_id.month',0,2)),
"-",
array('$substr' => array('$_id.day',0,2)),
" ",
array('$substr' => array('$_id.hour',0,2)),
":00:00",
),
),
"MaxValue" => '$MaxValue',
"MinValue" => '$MinValue',
"Gemiddelde" => '$Gemiddelde',
"Aantal" => '$Aantal',
)
),
);
함수의 의미는 어디 을 시간 창에서 maxValue를, MINVALUE, 평균 및 레코드 수를 얻을 수있다 $i
은 $i
의해 주어진 어레이 ($valRefId
)하고 그룹에 $year
, 인 $month
, $day
및 .
결과적으로 "_id"를 갖게되었습니다. "날짜", "maxValue", "minValue", "Gemiddelde", "Aantal".
내 질문이 지금은 문자열 형식이 아닌 날짜 형식 (또는 타임 스탬프 형식)으로 "날짜"필드를 반환 할 수 있습니까?
지금은 기능에 의해 그룹에있는 첫 번째 항목을 얻을. 나는 이것으로 작업 할 수 있다고 생각한다. 그러나 '날짜'필드의 문자열 유형을 날짜 유형으로 변경할 수 있습니까? –
집계 파이프 라인에서 문자열을 날짜로 변환 할 방법이 없지만 날짜를 문자열로 변환 할 수 있습니다. – chridam