Docs Menu
Docs Home
/
MongoDBマニュアル
/ / /

$mod(集計)

項目一覧

  • 定義
  • 構文
  • 動作
$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 } ]

戻る

$minute