Docs Menu
Docs Home
/ /

$nin

$nin

$nin Selecciona 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 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 field tiene un arreglo, el operador $nin selecciona los documentos cuyo field tiene 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.

Para crear la colección inventory utilizada en los ejemplos, ejecute:

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 consulta selecciona todos los documentos de la inventory colección donde quantity no es igual a 5 ni 15 a. La consulta también busca documentos que no tengan el quantity campo.

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

Ejemplo de salida:

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

Esta consulta establece el campo exclude en true para los documentos que no tienen 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.

Volver

$ne

En esta página