定義
互換性
次の環境でホストされる配置には $cond を使用できます。
MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです
MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン
MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン
構文
$cond 式は次の 2 つの構文のいずれかをとります。
{ $cond: { if: <boolean-expression>, then: <true-case>, else: <false-case> } }
または:
{ $cond: [ <boolean-expression>, <true-case>, <false-case> ] }
$cond はいずれの構文でも 3 つのすべての引数(if-then-else)を必要とします。
<boolean-expression> が true と評価された場合、$cond は<true-case> 式の値を評価して返します。それ以外の場合、$cond は <false-case> 式の値を評価して返します。
引数には任意の有効な式を使用できます。 式の詳細については、「式 」を参照してください。
Tip
例
このページの例では、付属の sample_mflixサンプルデータセット のデータを使用します。このデータセットを自己管理型MongoDBデプロイにロードする 方法の詳細については、「サンプルデータセットをロードする 」を参照してください。サンプルデータベースに変更を加えた場合、このページの例を実行するには、データベースを削除して再作成する必要がある場合があります。
次の集計操作では、$cond式を使用して各映画にインストール価格を割り当てます。この操作では、imdb.ratingが 9 以上の映画を 5.99 で価格付けします。この操作では他のすべての映画の価格は 3.99 です。
db.movies.aggregate( [ { $match: { runtime: { $gt: 1000 } } }, { $project: { title: 1, rentalPrice: { $cond: { if: { $gte: [ "$imdb.rating", 9 ] }, then: 5.99, else: 3.99 } } } } ] )
[ { _id: ..., title: 'Baseball', rentalPrice: 5.99 }, { _id: ..., title: 'Centennial', rentalPrice: 3.99 } ]
次の操作では、$cond 式の配列構文を使用して、同じ結果を返します。
db.movies.aggregate( [ { $match: { runtime: { $gt: 1000 } } }, { $project: { title: 1, rentalPrice: { $cond: [ { $gte: [ "$imdb.rating", 9 ] }, 5.99, 3.99 ] } } } ] )