collection: users
fields: name, age
我希望在PHP中应用map reduce函数,该函数将返回用户的计数,按年龄分组并按年龄排序。
我无法使用本机php-mongo驱动程序在PHP中找到任何好的示例。当然,我不想在客户端进行排序,因为结果可能很大。
答案 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()返回单个文档而不是光标,并且在返回之前无法对其进行排序。根据文件:
“要订购分组数据,只需在退货后对客户端进行排序。”