Mongo获取聚合查询中的平均值

时间:2015-08-19 10:01:28

标签: mongodb mongodb-query

我想获得一组值的平均值。 通过以下查询,我得到以下结果: 我希望得到" waardes"的平均值。阵列。 这在聚合查询中是否可行:

$Query= array(
    array(
        '$match' => array( '$and' => array(                                 
                                    array('ScienceId' => (string)748),
                                    array('type' => 1),
                                    array('day' => (string)2015-08-19),
                                    array('hour' =>  array('$in' => 13)),
                                    array('minute' =>  array('$in' => 11)),
                                    array('values.118.GroepId' =>(int)118),
                                    array('values.118.5.description' =>(string)001_buitentemp),
                                ) 
                ),
    ),
    array(
        '$sort' => array(
            "_id" => -1,
            "Day"   => 1,
            "Hour" => 1,
        )
    ),
    array(
        '$limit' => 10000
     ),
    array(
        '$group' => array(
            "_id" => array("Science Id" => '748',
                           "Day" => '2015-08-19,
                           "Hour" => '13',
                           "Minute" => '11',
                           "Groep Id" => '$values.118.GroepId",
                           "k" => '$values.'.$groep_id.'.'.$val_id.'.values',
                          ),
            "LastId" => array('$last' => '$_id'),
            "FirstId" => array('$first' => '$_id'),
            "Aantal" => array('$sum' => 1),
        ),
    ),
    array(
        '$project' => array(
            "_id" => '$_id.Science Id',
            "groep" => '$_id.Groep Id',
            "waardes" => '$_id.k',
        )
    ),
);

如果我运行此查询:$result = $col->aggregate($Query);,我会得到以下结果:

{"result":[{"_id":"748","groep":118,"waardes":[20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2,20.2]}],"ok":1}

现在我希望获得" waardes"的平均价值。 这在聚合查询中是否可行。

如果我在查询中添加了array('$unwind' => '$waardes'),则会收到以下错误: exception: $unwind: value at end of field path must be an array'

这是我的文件:

{
"_id" : ObjectId("55d464811a8014df6d8b456d"),
"scienceId" : "748",
"type" : NumberLong(1),
"day" : "2015-08-19",
"hour" : "13",
"minute" : "11",
"values" : {
    "118" : {
        "GroepNaam" : "cel",
        "GroepNummer" : NumberLong(1),
        "GroepId" : NumberLong(118),
        "5" : {
            "description" : "001_buitentemp",
            "values" : {
                "0" : 20.1999999999999990,
                "1" : 20.1999999999999990,
                "2" : 20.1999999999999990,
                "3" : 20.1999999999999990,
                "4" : 20.1999999999999990,
                "5" : 20.1999999999999990,
                "6" : 20.1999999999999990,
                "7" : 20.1999999999999990,
                "8" : 20.1999999999999990,
                "9" : 20.1999999999999990,
                "10" : 20.1999999999999990,
                "11" : 20.1999999999999990,
                "12" : 20.1999999999999990,
                "13" : 20.1999999999999990,
                "14" : 20.1999999999999990,
                "15" : 20.1999999999999990,
                "16" : 20.1999999999999990,
                "17" : 20.1999999999999990,
                "18" : 20.1999999999999990,
                "19" : 20.1999999999999990,
                "20" : 20.1999999999999990,
                "21" : 20.1999999999999990,
                "22" : 20.1999999999999990,
                "23" : 20.1999999999999990,
                "24" : 20.1999999999999990,
                "25" : 20.1999999999999990,
                "26" : 20.1999999999999990,
                "27" : 20.1999999999999990,
                "28" : 20.1999999999999990,
                "29" : 20.1999999999999990,
                "30" : 20.1999999999999990,
                "31" : 20.1999999999999990,
                "32" : 20.1999999999999990,
                "33" : 20.1999999999999990,
                "34" : 20.1999999999999990,
                "35" : 20.1999999999999990,
                "36" : 20.1999999999999990,
                "37" : 20.1999999999999990,
                "38" : 20.1999999999999990,
                "39" : 20.1999999999999990,
                "40" : 20.1999999999999990,
                "41" : 20.1999999999999990,
                "42" : 20.1999999999999990,
                "43" : 20.1999999999999990,
                "44" : 20.1999999999999990,
                "45" : 20.1999999999999990,
                "46" : 20.1999999999999990,
                "47" : 20.1999999999999990,
                "48" : 20.1999999999999990,
                "49" : 20.1999999999999990,
                "50" : 20.1999999999999990,
                "51" : 20.1999999999999990,
                "52" : 20.1999999999999990,
                "53" : 20.1999999999999990,
                "54" : 20.1999999999999990,
                "55" : 20.1999999999999990,
                "56" : 20.1999999999999990,
                "57" : 20.1999999999999990,
                "58" : 20.1999999999999990,
                "59" : 20.1999999999999990
            }
        }
    }
}

}

0 个答案:

没有答案