查询 $mod
运算符用于根据除法运算的其余部分筛选文档。 此运算符允许涉及数学条件的查询,例如查找数值被数字分割或具有特定余数的值。 Azure Cosmos DB for MongoDB(vCore)支持它。
语法
{
<field>: { $mod: [ <divisor>, <remainder> ] }
}
-
<field>
:要对其执行取模运算的字段。 -
<divisor>
:要对其值进行除法的数字。 -
<remainder>
:除法后的预期余数。
示例
示例 1:查找值被 3 分割的文档sales
db.collection.find({ "sales": { "$mod": [3, 0] } })
本示例检索字段值被 3(即余数为 0)除名的所有文档 sales
。 它将生成以下输出:
[
{ "_id": 1, "sales": 9, "product": "A" },
{ "_id": 2, "sales": 15, "product": "B" },
{ "_id": 3, "sales": 21, "product": "C" }
]
示例 2:查找在除以 5 时该值的余数为 2 的文档totalSales
db.collection.find({ "totalSales": { "$mod": [5, 2] } })
此查询筛选字段除以 5 时字段的余数为 2 的文档 totalSales
。 它将生成以下输出:
[
{ "_id": 4, "totalSales": 7, "product": "X" },
{ "_id": 5, "totalSales": 12, "product": "Y" },
{ "_id": 6, "totalSales": 17, "product": "Z" }
]
示例 3:使用$mod查询嵌套字段
db.collection.find({ "sales.monthly.total": { "$mod": [4, 1] } })
此示例演示如何使用sales.monthly.total
运算符查询嵌套字段 ($mod
)。 它将生成以下输出:
[
{ "_id": 7, "sales": { "monthly": { "total": 5 } }, "category": "Electronics" },
{ "_id": 8, "sales": { "monthly": { "total": 9 } }, "category": "Clothing" }
]
局限性
- 运算符
$mod
仅应用于数值字段。 在非数值字段中使用它会导致错误。 - 确保除数不为零,因为它会导致无效的作。