Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

$nin (query predicate operador)

$nin

$nin selecciona los documentos donde:

  • el valor del campo especificado no se encuentra en el arreglo especificado o

  • el campo especificado no existe.

Puedes usar $nin para implementaciones alojadas en los siguientes entornos:

  • MongoDB Atlas: El servicio totalmente administrado para implementaciones de MongoDB en la nube.
  • MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB

  • MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.

El operador $nin tiene la siguiente forma:

{ field: { $nin: [ <value1>, <value2> ... <valueN> ] } }

A diferencia de los operadores de desigualdad ($gt, $gte, $lt y $lte), $nin no utiliza corchetes de tipo. En cambio, coincide con documentos donde el valor del campo no es uno de los valores especificados, independientemente del tipo de valor.

Por ejemplo, { a: { $nin: [ 2, 4 ] } } también coincide con documentos donde a es una cadena.

Si field contiene una matriz, el operador $nin selecciona los documentos cuya field contiene una matriz sin ningún elemento igual a un valor de la matriz especificada. Por ejemplo, <value1>, <value2>, etc.

Los ejemplos de esta página utilizan datos del conjunto de datos sample_mflix. Para obtener más información sobre cómo cargar este conjunto de datos en la implementación autogestionada de MongoDB, consultar Cargar el conjunto de datos de muestra. Si realizó alguna modificación en las bases de datos de muestra, es posible que deba descartar y volver a crear las bases de datos para ejecutar los ejemplos de esta página.

El siguiente ejemplo devuelve películas en las que runtime es mayor que 1000 minutos y rated no está en [ "G", "PG" ]. Debido a que $nin también coincide con documentos que no contienen el campo rated, la query devuelve las películas incluso cuando los datos de calificación no están disponibles:

db.movies.find(
{ rated: { $nin: [ "G", "PG" ] }, runtime: { $gt: 1000 } },
{ _id: 0, title: 1, year: 1, rated: 1 }
)

El siguiente ejemplo configura el campo exclude en true para las películas que no tengan "Drama" en su arreglo genres:

db.movies.updateMany(
{ genres: { $nin: [ "Drama" ] } },
{ $set: { exclude: true } }
)

updateMany() también selecciona un documento cuando el documento no contiene el campo con el que coincide $nin.

El operador de desigualdad $nin no es muy selectivo, ya que suele coincidir con una gran parte del índice. Por lo tanto, en muchos casos, una consulta $nin con un índice puede no tener mejor rendimiento que una consulta $nin que debe escanear todos los documentos de una colección. Véase también Crear consultas selectivas.