$bottomN (下位 N アキュムレータ)
最終更新:2026-10-09
$bottomN (下位 N アキュムレータ)
$bottomN は、指定したソート順序に従ってグループごとに下位 N 個のドキュメント(または式の値)を返すアキュムレータで、$topN と対称で、MongoDB 5.2 以降で利用できます。順序は $group の sortBy に由来し、n は定数式にもできます。グループごとの下位 N や最古 N のレコード取得に向きます。
| カテゴリ | アキュムレータ |
|---|---|
| MongoDB バージョン | 5.2+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ $group: { _id: <key>, bottomN: { $bottomN: { sortBy: { <field>: <1 or -1> }, output: <expression>, n: <number> } } } }
戻り値:グループごとの下位 N 個の値またはドキュメントの配列
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $bottomN: クラスごとの名前の下位 3 件
db.scores.aggregate([
{ $group: { _id: '$class', bottom3: { $bottomN: { sortBy: { score: 1 }, output: '$name', n: 3 } } } }
])
出力:
{ "_id": "A", "bottom3": ["Dave", "Eve", "Frank"] }
📌 注意事項
- MongoDB 5.2 以降が必要
- $topN と対称。方向は sortBy で制御する
- n は式を受け付けるため動的にできる
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Q$bottomN と $topN の方向はどう決めますか?
AsortBy の方向で決まります。昇順なら $bottomN は下位の集団を取ります。
Qn は動的にできますか?
Aはい。n は式を受け付けます。
Q$bottomN はドキュメント全体を返しますか?
Aoutput を省略すればドキュメント全体、指定すれば選択フィールドを返します。