1
collection: users
fields: name, age

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

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

4

1 回答 1

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.ini 中进行排序。这是因为 group() 返回单个文档而不是游标,并且在返回之前无法对其进行排序。根据文档:

“要对分组数据进行排序,只需在返回时在客户端对其进行排序。”

于 2012-06-11T10:16:54.813 回答