在PHP中使用聚合MongoDB的结果

在PHP中使用聚合MongoDB的结果,php,mongodb,Php,Mongodb,我有以下代码: $data = $collection->aggregate( array( '$group'=> array( '_id' => $fn, 'massi' => array( '$max' => $dnameth_value ) ) ) ); 我执行这个查询,只想获得MAX值,并在变量中使用它

我有以下代码:

$data = $collection->aggregate(
    array( 
        '$group'=> array(
            '_id' => $fn,
            'massi' => array(
                '$max' => $dnameth_value
            )
         )
    )
);
我执行这个查询,只想获得MAX值,并在变量中使用它


我尝试了以下代码:

$data=$collection->aggregate(array( '$group'=> array('_id'=>$fn,'massi'=>array('$max'=>$dnameth_value))));

var_dump( $data['result'] );

$func = function($value) {
return $value->massi;};


$massi = array_map($func, $data['result']);

var_dump($massi);
图像附加中的输出


执行查询时,助手方法的返回值是一个包含两个元素的数组:
ok
,值为
double(1)
,以及一个包含整个管道中所有文档的数组的结果元素

例如,如果您想按字段
my\u key
对所有文档进行分组,并想从该组中获得最大
dnameth\u值,则执行此聚合操作

<?php
$m = new MongoClient;
$collection = $m->test->collection;
$fn = '$my_key';
$dnameth_value = '$dnameth_value'
$data = $collection->aggregate(
    array( 
        '$group'=> array(
            '_id' => $fn,
            'massi' => array(
                '$max' => $dnameth_value
            )
         )
    )
);

var_dump( $data['result'] );
?>

注意:由于聚合框架通过网络将其所有结果作为一个文档返回,因此完整结果限制为16MB。内部也有内存限制,因此,尽可能快地使用操作符限制通过管道传输的数据总是明智的


因此,根据您的请求,您基本上希望使用将数组中的所有
masi
值映射到另一个数组变量中:

<?php
$m = new MongoClient;
$collection = $m->test->collection;
$fn = '$my_key';
$dnameth_value = '$dnameth_value'
$data = $collection->aggregate(
    array( 
        '$group'=> array(
            '_id' => $fn,
            'massi' => array(
                '$max' => $dnameth_value
            )
         )
    )
);

var_dump( $data['result'] );

$func = function($value) {
    return $value['massi'];
};

$massi = array_map($func, $data['result']);
var_dump($massi);
?>

执行查询时,助手方法的返回值是一个包含两个元素的数组:
ok
值为
double(1)
,以及一个结果元素,其中包含通过整个管道的所有文档的数组

例如,如果您想按字段
my\u key
对所有文档进行分组,并想从该组中获得最大
dnameth\u值,则执行此聚合操作

<?php
$m = new MongoClient;
$collection = $m->test->collection;
$fn = '$my_key';
$dnameth_value = '$dnameth_value'
$data = $collection->aggregate(
    array( 
        '$group'=> array(
            '_id' => $fn,
            'massi' => array(
                '$max' => $dnameth_value
            )
         )
    )
);

var_dump( $data['result'] );
?>

注意:由于聚合框架通过网络将其所有结果作为一个文档返回,因此完整结果限制为16MB。内部也有内存限制,因此,尽可能快地使用操作符限制通过管道传输的数据总是明智的


因此,根据您的请求,您基本上希望使用将数组中的所有
masi
值映射到另一个数组变量中:

<?php
$m = new MongoClient;
$collection = $m->test->collection;
$fn = '$my_key';
$dnameth_value = '$dnameth_value'
$data = $collection->aggregate(
    array( 
        '$group'=> array(
            '_id' => $fn,
            'massi' => array(
                '$max' => $dnameth_value
            )
         )
    )
);

var_dump( $data['result'] );

$func = function($value) {
    return $value['massi'];
};

$massi = array_map($func, $data['result']);
var_dump($massi);
?>

谢谢我使用以下代码:var_dump($data['result'])$MASI=数组_值($data['result'])[0]>MASI;var_dump($Masi);第一个var_dump可以,但第二个var_dump返回null是否对集合中的所有文档进行分组?是,我对所有文档进行分组。我使用以下代码:var_dump($data['result'])$MASI=数组_值($data['result'])[0]>MASI;var_dump($Masi);第一个var_dump可以,但第二个var_dump返回null是否对集合中的所有文档进行分组?是,我对所有文档进行分组