$isArray (配列かどうかの判定)

最終更新:2026-10-09

$isArray (配列かどうかの判定)

$isArray は、式が配列に解決されるかを表すブール値を返します。$cond 内での型分岐によく使われます。フィールドがスカラーか配列のどちらかを取り得る場合、まず $isArray で判定してから処理経路を選びます。$size や $map のように配列のみを受け付ける演算子をエラーから守るガードとしても機能します。集計式における型ガードであり、$type と組み合わせればより精密な BSON 型チェックも可能です。フィールドが欠落している場合はエラーではなく false を返します。

カテゴリ配列
MongoDB バージョン1.0+
例の言語mongosh(シェル)

📝 構文

{ $isArray: <expression> }

⚙️ パラメータ

式結果が配列型かどうかを判定する任意の式。

戻り値:ブール値。結果が配列の場合は true、それ以外は false

▶ 例

以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):

// $isArray: タグが文字列でも配列でもカウントする
db.products.aggregate([
  { $project: {
      tagCount: { $cond: { if: { $isArray: '$tags' }, then: { $size: '$tags' }, else: 1 } }
  } }
])

出力:

{ '_id': 1, 'tagCount': 3 }
{ '_id': 2, 'tagCount': 1 }

📌 注意事項

さらなる実践ケースを近日公開予定。

📚 関連チュートリアル

❓ よくある質問

Qフィールドが欠落しているときは何を返しますか?
Aエラーを投げずに false を返します。ガードとして安全に使えます。
Q文字列と配列は区別できますか?
Aはい — 文字列は false です。true になるのは BSON の配列型だけです。
Q$cond とどう組み合わせますか?
A$cond の if に $isArray を置き、then/else に 2 つの分岐を書きます。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%