collection: users
fields: name, age
我希望在PHP中应用地图缩减功能,该功能将返回按用户年龄分组并按年龄分类的用户数。Mongo地图缩小和排序
我无法在PHP中使用本机php-mongo驱动程序来找到任何好的示例。当然,我不想在客户端排序,因为结果可能很大。
collection: users
fields: name, age
我希望在PHP中应用地图缩减功能,该功能将返回按用户年龄分组并按年龄分类的用户数。Mongo地图缩小和排序
我无法在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做。这是因为group()返回单个文档而不是游标,并且它在返回之前无法排序。根据文档:
“要订购分组数据,只需在返回时对客户端进行排序。”
[这里](http://stackoverflow.com/questions/3002841/mongo-map-reduce-first-time)是很好的例子,如何从PHP运行m/r。 –
@Andrew没有排序 – danidacar
您可以输出map reduce的结果到一个新的集合,然后对这个集合进行排序。如果您正在进行内联映射缩减,则无法对结果进行排序。 http://www.mongodb.org/display/DOCS/MapReduce#MapReduce-Outputoptions – Jenna