$size (配列の長さを取得)
最終更新:2026-10-09
$size (配列の長さを取得)
$size は配列の要素数を 0 以上の整数として返します。最も一般的な配列のメタデータ演算子で、注文アイテム数のカウント、空配列の検出、$expr を使った $match 内での配列長によるフィルタリングなどに使われます。引数は配列でなければならず、文字列や数値を渡すとエラーになります。文字列の長さには $strLenCP を使います。$size は $match の通常のクエリ構文では使えず、$expr を経由する必要があります。
| カテゴリ | 配列 |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ $size: <array> }
⚙️ パラメータ
| 配列 | 長さを計算する配列式。 |
|---|
戻り値:要素数を非負の整数で返します。引数が配列でない場合は例外を送出
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $size: 注文ごとのアイテム数を数える
db.orders.aggregate([
{ $project: {
itemCount: { $size: '$items' }
} }
])
出力:
{ '_id': 1, 'itemCount': 2 }
{ '_id': 2, 'itemCount': 5 }
📌 注意事項
- 引数は配列でなければエラー。欠落フィールドは $ifNull で空配列にガードする
- $match での配列長フィルタは { $expr: { $gte: [{ $size: '$tags' }, 3] } } のように書く
- 文字列の長さは $strLenCP で測る
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Q$size をクエリ条件で使えますか?
A通常のクエリ構文では使えません。$expr で包みます。例: { $expr: { $gt: [{ $size: '$tags' }, 2] } }。
Qフィールドが欠落しているとどうなりますか?
Aエラーになります。$ifNull や $cond でチェックし、欠落は 0 として扱ってください。
Q文字列の長さを数えられますか?
Aいいえ — 文字列は配列ではありません。文字列の長さには $strLenCP を使います。