Definición
$not$notrealiza una operaciónNOTlógica sobre los<operator-expression>especificados y selecciona los documentos que no coinciden con el<operator-expression>. Esto incluye documentos que no contienen elfield.
Compatibilidad
Puedes usar $not 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.
Sintaxis
El operador $not tiene la siguiente forma:
{ field: { $not: { <operator-expression> } } }
Considera el siguiente ejemplo:
db.inventory.find( { price: { $not: { $gt: 1.99 } } } )
El ejemplo selecciona todos los documentos de la colección inventory donde:
el valor del campo
pricees menor o igual a1.99oel campo
priceno existe
{ $not: { $gt: 1.99 } } difiere del $lte operador. { $lte: 1.99 } devuelve solo los documentos donde price existe el campo y su valor es menor o igual 1.99 a.
Utilice el operador $not con otra expresión de operador. Para usar $not en una comprobación de desigualdad, utilice:
{ price: { $not: { $eq: 1.99 } } }
El query anterior es equivalente a:
{ price: { $ne: 1.99 } }
La siguiente consulta no es válida porque compara un campo sin un operador:
{ price: { $not: 1.99 } }
Comportamiento
Arreglos
El $not operador puede producir resultados inesperados al usarse con una matriz. Para encontrar coincidencias de documentos según varias condiciones falsas,$nor use.
Expresiones regulares
$not admite NOT operaciones lógicas en:
Objetos de expresión regular, como
/pattern/.La siguiente consulta selecciona documentos en la colección
inventorydonde el valor del campoitemno comienza con la letrap:db.inventory.find( { item: { $not: /^p.*/ } } ) $regexexpresiones de operador.Por ejemplo, el siguiente query selecciona todos los documentos de la colección
inventorydonde el valor del campoitemno comienza con la letrap.db.inventory.find( { item: { $not: { $regex: "^p.*" } } } ) db.inventory.find( { item: { $not: { $regex: /^p.*/ } } } ) Objetos de expresión regular del lenguaje del controlador.
Por ejemplo, el siguiente PyMongoLa consulta utiliza el
re.compile()método de Python para compilar una expresión regular:import re for noMatch in db.inventory.find( { "item": { "$not": re.compile("^p.*") } } ): print noMatch