在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是否对集合中的所有文档进行分组?是,我对所有文档进行分组