定義
構文
$mod式の構文は次のとおりです。
{ $mod: [ <expression1>, <expression2> ] } 
1 番目の引数は被除数、2 番目の引数は除数です。 つまり、1 番目の引数を 2 番目の引数で除算します。
動作
引数は、数値に変換される限り、どのような有効な式でもかまいません。 式の詳細については、「式 」を参照してください。
バージョン7.2以降、 $mod演算子の出力データ型は、2 つの入力データ型のうち大きいです。
注意
バージョン7.2より前では、入力の 値とフィールド型によって$modの出力型が決定されます。
- 除数は - double型ですが、整数値です。
- 配当は - intまたは- longタイプです。
この場合、 MongoDB は$mod操作 を実行する前に、除数を被除数データ型に変換します。 出力データ型は、配当データ型です。
マイナス配当
配当がマイナスの場合、余りもマイナスになります。この動作の詳細については、 公式のJavaScriptドキュメント を参照してください。
例については、「 負の配当」を参照してください。
例
以下のドキュメントを持つconferencePlanningコレクションを考えてみましょう。
db.conferencePlanning.insertMany( [    { "_id" : 1, "city" : "New York", "hours" : 80, "tasks" : 7 },    { "_id" : 2, "city" : "Singapore", "hours" : 40, "tasks" : 4 } ] ) 
次の集計では、 $mod式を使用して、 hoursフィールドの余りをtasksフィールドで割った値を返します。
db.conferencePlanning.aggregate( [   { $project: { remainder: { $mod: [ "$hours", "$tasks" ] } } } ] ) 
この操作は次の結果を返します。
[   { '_id' : 1, 'remainder' : 3 },   { '_id' : 2, 'remainder' : 0 } ] 
マイナス配当
次のドキュメントを含むmodExampleコレクションについて考えます。
db.modExample.insertOne( [    { "_id" : 1, "dividend": -13, "divisor": 9 } ] ) 
この集計では、 $mod式を使用して、 dividendの余りをdivisorフィールドで割った値が返されます。
db.modExample.aggregate( [   { $project: { remainder: { $mod: [ "$dividend", "$divisor" ] } } } ] ) 
この操作は次の結果を返します。
[ { '_id' : 1, 'remainder' : -4 } ]