$mod(作为查询运算符)

查询 $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 仅应用于数值字段。 在非数值字段中使用它会导致错误。
  • 确保除数不为零,因为它会导致无效的作。