Docs Menu
Docs Home
/ /
Consulta de comparación

$nin

$nin

$nin selecciona los documentos en los que se cumplen estas condiciones:

  • 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 gestionado 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> ] } }

Si el field contiene un arreglo, el operador $nin selecciona los documentos cuyo field contiene un arreglo sin ningún elemento igual a un valor en el arreglo especificado (por ejemplo, <value1>, <value2>, y así sucesivamente).

Para la comparación de diferentes valores de tipo BSON, consulta el orden de comparación especificado de BSON.

Crear la colección inventory:

db.inventory.insertMany( [
{ item: "Pens", quantity: 350, tags: [ "school", "office" ] },
{ item: "Erasers", quantity: 15, tags: [ "school", "home" ] },
{ item: "Maps", tags: [ "office", "storage" ] },
{ item: "Books", quantity: 5, tags: [ "school", "storage", "home" ] }
] )

La siguiente query selecciona todos los documentos de la colección inventory en que quantity no es igual ni a 5 ni a 15.

La query también coincide con documentos que no tienen un campo quantity.

db.inventory.find( { quantity: { $nin: [ 5, 15 ] } }, { _id: 0 } )

Ejemplo de salida:

{ item: 'Pens', quantity: 350, tags: [ 'school', 'office' ] },
{ item: 'Maps', tags: [ 'office', 'storage' ] }

Establece el campo exclude en true para los documentos que no tengan la etiqueta "school".

db.inventory.updateMany(
{ tags: { $nin: [ "school" ] } },
{ $set: { exclude: true } }
)

updateMany() también selecciona un documento cuando el documento no contiene el campo $nin con el que se está haciendo la coincidencia.

El operador de desigualdad $nin no es muy selectivo, ya que a menudo coincide con una gran parte del índice. Como resultado, en muchos casos, puede que un query $nin con un índice no tenga un mejor rendimiento que un query $nin que debe escanear todos los documentos de una colección. Consulta también Crear queries selectivos.

Tip

Volver

$ne

En esta página