en php je le funnction global mongo suivant:php mongo projet global à champ Date
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',
)
),
);
La signification de la fonction est d'obtenir valeurmax, MinValue, moyen et le nombre d'enregistrements dans une fenêtre de temps où $i
est dans une gamme donnée ($valRefId
) puis par groupe $i
, $year
, $month
, $day
et $hour
.
En conséquence, j'ai maintenant le "_id". "date", "maxValue", "minValue", "Gemiddelde", "Aantal".
Ma question est maintenant, est-il possible de retourner le champ "date" pas dans le type de chaîne, mais en tant que type Date (ou type d'horodatage)?
Je reçois maintenant la première entrée trouvée dans le groupe par fonction. Je pense que je peux travailler avec ça. Mais il est possible de changer le type de chaîne du champ 'date' en un type de date? –
Il n'existe aucun moyen de convertir la chaîne à ce jour dans le pipeline d'agrégation, mais la date à la chaîne est possible. – chridam