最新バージョンのmongodbがインストールされていると仮定すると、それを行う1つの方法は次のとおりです。
並べ替え
published_date
に基づくレコード 降順。グループ
カテゴリ
に基づくレコード 。グループごとに、すべてのレコードを1つの配列にまとめます。- javascript /クライアント側のコードで、
スライス
各グループ(カテゴリ)の上位5つのレコード。
$スライスコード> サーバー側の
$project
では使用できません サーバー側での操作の実行を妨げる集約パイプライン演算子。
var result = db.collection.aggregate(
[
{$sort:{"published_date":-1}},
{$group:{"_id":"$category","values":{$push:"$$ROOT"}}}
]
).map(function(doc){
return {"category":doc._id,"records":doc.values.slice(0,5)};
});
結果コード> 変数はドキュメントの配列になります。各
カテゴリ
を表す各ドキュメント そして今度はトップ5
の配列を持ちます 記録。