$mod (剰余)
最終更新:2026-10-09
$mod (剰余)
$mod は、フィールドの値を除数で割ったときの剰余が指定値になるドキュメントに一致します。`{ qty: { $mod: [4, 0] } }` は 4 で割り切れる数量に一致します。バケット化や周期フィルターに便利です。MongoDB 5.1 以降、除数と剰余はどちらも整数である必要があり、浮動小数点数はエラーになります。
| カテゴリ | 要素と評価 |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ <field>: { $mod: [ <divisor>, <remainder> ] } }
⚙️ パラメータ
| フィールド | テストする数値フィールド。 |
|---|---|
| 除数と剰余の配列 | 整数の [除数, 剰余] の固定ペア。 |
戻り値:一致するドキュメントのカーソル
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $mod: 4 で割り切れる数量
db.products.find({ qty: { $mod: [4, 0] } })
// 剰余 1: 4 個ごとのグループの最初の品目
db.products.find({ qty: { $mod: [4, 1] } })
出力:
// 剰余 0(割り切れる)の数量を返す。2 つ目は剰余 1 の数量を返す
📌 注意事項
- 配列は [除数, 剰余] の固定順。順序を守ること
- 5.1 以降は整数のみ。浮動小数点数はエラーになり、負の数は剰余の意味論に依存する
- インデックスは使えない。大規模データには $mod 集計式を優先する
🏷️ 関連タグ
💡 関連ケース
📚 関連チュートリアル
❓ よくある質問
Q$mod の 2 つの数値は何を意味しますか?
A[除数, 剰余] です。除算の剰余が 2 番目の数値と等しい値に一致します。
Q$mod は浮動小数点数をサポートしますか?
AMongoDB 5.1 以降はサポートしません。除数と剰余は整数である必要があります。
Q$mod はインデックスを使えますか?
Aいいえ。計算条件のためコレクションをスキャンします。