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