$cmp (比較)

最終更新:2026-10-09

$cmp (比較)

$cmp は 2 つの値を比較し、未満・等しい・より大きいに対して -1、0、1 を返します。式形式の比較演算子で、$cond 内でのカスタムソートキーやサイズチェックによく使われます。比較は BSON の型順序に従うため、異なる型の比較でもエラーにはならず、値は型で順序付けられます。ブール値を返す $eq や $gt とは違い、$cmp は 3 値の結果を返すため、ソートロジックや分岐にそのまま使えます。

カテゴリ集合・条件・変換
MongoDB バージョン1.0+
例の言語mongosh(シェル)

📝 構文

{ $cmp: [ <expression1>, <expression2> ] }

⚙️ パラメータ

式1比較する最初の式。
式2比較する2番目の式。

戻り値:1つ目が小さい場合は -1、等しい場合は 0、大きい場合は 1

▶ 例

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

// $cmp: 2 つのスコアを比較
db.scores.aggregate([
  { $project: {
      result: { $cmp: ['$scoreA', '$scoreB'] }
  } }
])

出力:

{ '_id': 1, 'result': 1 }
{ '_id': 2, 'result': -1 }

📌 注意事項

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

📚 関連チュートリアル

❓ よくある質問

Q$cmp は何を返しますか?
A最初が未満なら -1、等しければ 0、より大きければ 1 です。
Q$eq との違いは?
A$eq はブール値を返します。$cmp はソートや分岐に適した 3 値の結果を返します。
Q異なる型の比較でエラーになりますか?
Aいいえ — BSON の型順序に従うため、文字列は数値の後に並びます。
Web-Tutorial.com

Web-Tutorial 技術チーム

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

100%