1
collection: users
fields: name, age

年齢別にグループ化され、年齢別にソートされたユーザーの数を返す PHP の map reduce 関数を適用したいと考えています。

ネイティブの php-mongo ドライバーを使用してこれを行う PHP の良い例は見つかりません。もちろん、結果が膨大になる可能性があるため、クライアント側でソートしたくありません。

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 で行う必要があります。これは、group() がカーソルではなく単一のドキュメントを返し、返される前に並べ替えることができないためです。ドキュメントに従って:

「グループ化されたデータを並べ替えるには、返されたときにクライアント側で並べ替えるだけです。」

于 2012-06-11T10:16:54.813 に答える