$mod

Performs a modulo operation and matches documents where the field value modulo divisor equals the specified remainder.

Syntax

{ <field>: { $mod: [<divisor>, <remainder>] } }

Parameters

fieldstringrequired

The numeric field to perform modulo operation on

divisornumberrequired

The number to divide by in the modulo operation

remaindernumberrequired

The expected remainder value after the modulo operation

Examples

Find even numbers

Find stores where total sales is an even number

Query:

db.stores.find({ "sales.totalSales": { $mod: [2, 0] } })

Output:

Documents where totalSales is divisible by 2 (even numbers)

Find odd numbers

Find stores where staff count is an odd number

Query:

db.stores.find({ "staff.totalStaff.fullTime": { $mod: [2, 1] } })

Output:

Documents where fullTime staff count has remainder 1 when divided by 2 (odd numbers)

Pagination with modulo

Use modulo for pagination or sampling every nth document

Query:

db.stores.find({ "sales.totalSales": { $mod: [10, 5] } })

Output:

Documents where totalSales ends in 5 (remainder 5 when divided by 10)

Data partitioning

Partition data based on ID patterns using modulo

Query:

db.stores.find({ "staff.totalStaff.partTime": { $mod: [3, 0] } })

Output:

Documents where partTime staff count is divisible by 3

Complex modulo queries

Combine modulo with other operators for complex filtering

Query:

db.stores.find({ $and: [{ "sales.totalSales": { $mod: [100, 50] } }, { "sales.totalSales": { $gt: 1000 } }] })

Output:

Documents where totalSales is greater than 1000 and has remainder 50 when divided by 100

Related