$mod(集計)
定義
構文
$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 } ]