collection: users
fields: name, age
我希望在 PHP 中应用一个 map reduce 函数,它将返回用户的计数,按年龄分组并按年龄排序。
我在 PHP 中找不到使用本机 php-mongo 驱动程序来执行此操作的任何好的示例。当然,我不想在客户端进行排序,因为结果可能很大。
我将假设您已经建立了联系,并且已经对收藏夹进行了排序。您将不得不使用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.ini 中进行排序。这是因为 group() 返回单个文档而不是游标,并且在返回之前无法对其进行排序。根据文档:
“要对分组数据进行排序,只需在返回时在客户端对其进行排序。”