Compartir a través de


$mod (como operador de consulta)

El $mod operador de consulta se usa para filtrar documentos en función del resto de una operación de división. Este operador permite consultas que implican condiciones matemáticas, como buscar valores divisibles por un número o tener un resto específico. Se admite en Azure Cosmos DB para MongoDB (núcleo virtual).

Sintaxis

{ 
  <field>: { $mod: [ <divisor>, <remainder> ] } 
}
  • <field>: el campo en el que se va a realizar la operación de módulo.
  • <divisor>: número por el que se va a dividir el valor del campo.
  • <remainder>: el resto esperado después de la división.

Ejemplo

Ejemplo 1: Buscar documentos donde el sales valor es divisible en 3

db.collection.find({ "sales": { "$mod": [3, 0] } })

En este ejemplo se recuperan todos los documentos en los que el valor del sales campo es divisible en 3 (es decir, el resto es 0). Generará la siguiente salida:

[
  { "_id": 1, "sales": 9, "product": "A" },
  { "_id": 2, "sales": 15, "product": "B" },
  { "_id": 3, "sales": 21, "product": "C" }
]

Ejemplo 2: Buscar documentos en los que el totalSales valor tiene un resto de 2 cuando se divide entre 5

db.collection.find({ "totalSales": { "$mod": [5, 2] } })

Esta consulta filtra los documentos en los que el totalSales campo tiene un resto de 2 cuando se divide entre 5. Generará la siguiente salida:

[
  { "_id": 4, "totalSales": 7, "product": "X" },
  { "_id": 5, "totalSales": 12, "product": "Y" },
  { "_id": 6, "totalSales": 17, "product": "Z" }
]

Ejemplo 3: Consulta de campos anidados mediante $mod

db.collection.find({ "sales.monthly.total": { "$mod": [4, 1] } })

En este ejemplo se muestra cómo consultar un campo anidado (sales.monthly.total) con el $mod operador . Generará la siguiente salida:

[
  { "_id": 7, "sales": { "monthly": { "total": 5 } }, "category": "Electronics" },
  { "_id": 8, "sales": { "monthly": { "total": 9 } }, "category": "Clothing" }
]

Consideraciones

  • Si se especifican menos de dos valores en la matriz para el operador $mod, el servidor produce un error que indica que no se han pasado suficientes argumentos.
  • Si se especifican más de dos valores en la matriz para el operador $mod, el servidor produce un error que indica que se han pasado demasiados argumentos.

Limitaciones

  • El $mod operador solo se aplica a campos numéricos. Si se usa en campos no numéricos, se produce un error.
  • Asegúrese de que el divisor no sea cero, ya que conduce a una operación no válida.