Mongo map减少和排序

时间:2012-06-11 09:56:32

标签: php mongodb

collection: users
fields: name, age

我希望在PHP中应用map reduce函数,该函数将返回用户的计数,按年龄分组并按年龄排序。

我无法使用本机php-mongo驱动程序在PHP中找到任何好的示例。当然,我不想在客户端进行排序,因为结果可能很大。

1 个答案:

答案 0 :(得分:0)

我假设你有你的连接,并且已经收集了集合。您必须使用MongoCollection::group()函数来获得结果

$keys    = array('age' => 1);
$initial = array('count' => 0);
$reduce  = "function(doc, out) { out.count++; }";

$result = $collection->group($keys, $initial, $reduce);

var_dump($result)

至于排序:MongoDB不支持对组的结果进行排序,你必须在php中进行。这是因为group()返回单个文档而不是光标,并且在返回之前无法对其进行排序。根据文件:

“要订购分组数据,只需在退货后对客户端进行排序。”