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 } } } )
Este query seleccionará 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 } } es diferente del operador { $lte: 1.99 }. { $lte: 1.99 } devuelve únicamente los documentos donde el campo price existe y su valor es menor o igual a 1.99.
Debes usar el operador $not con otra expresión de operador. Por ejemplo, para usar $not para realizar una comprobación de desigualdad, usa esta sintaxis:
{ price: { $not: { $eq: 1.99 } } }
El query anterior es equivalente a:
{ price: { $ne: 1.99 } }
El siguiente $not query es inválido porque intenta comparar un campo sin un Operador:
{ price: { $not: 1.99 } }
Comportamiento
Arreglos
Cuando se pasa un argumento de arreglo, el Operador $not puede producir resultados inesperados. Para hacer coincidir documentos basados en múltiples condiciones falsas, utiliza $nor.
Expresiones regulares
El operador $not puede realizar una operación lógica NOT en:
Objetos de expresiones regulares (es decir,
/pattern/)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: /^p.*/ } } ) $regexexpresión de operadorPor 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