$not (NÃO Lógico)
Última atualização: 2026-10-09
$not (NÃO Lógico)
$not nega uma expressão de operador, retornando documentos que falham na condição interna. `{ price: { $not: { $gt: 50 } } }` corresponde a produtos com preço de no máximo 50. $not não corresponde a documentos com o campo ausente, e exige uma expressão de operador dentro — não um literal de regex.
| Categoria | Lógica |
|---|---|
| Versão do MongoDB | 1.0+ |
| Idioma do Exemplo | mongosh (Shell) |
📝 Sintaxe
{ <campo>: { $not: { <expressão de operador> } } }
⚙️ Parâmetros
| campo | O campo do documento a corresponder. |
|---|---|
| expressão de operador | A condição de operador a negar, por exemplo { $gt: 50 }. |
Retorno:Cursor dos documentos correspondentes
▶ Exemplo
Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):
// $not: price não maior que 50
db.products.find({ price: { $not: { $gt: 50 } } })
// Equivalente: $lte é mais direto
db.products.find({ price: { $lte: 50 } })
Saída:
// Retorna produtos com preço de no máximo 50; documentos com campo ausente são excluídos
📌 Notas
- $not não corresponde a campos ausentes; combine com $exists para incluí-los
- Prefira o operador direto ($lte, $ne) quando ele expressar a negação de forma mais clara
- $not aceita apenas expressões de operador ($gt, $regex), não literais
🏷️ Tags Relacionados
💡 Casos Relacionados
Noções básicas sobre consultas a documentos: o método `find` e as projeções
Operadores de consulta: um guia completo com mais de 30 operadores
📚 Tutoriais Relacionados
❓ Perguntas Frequentes
QQual é a diferença entre $not e $ne?
A$ne significa não-igual-a-um-valor; $not nega uma expressão de operador inteira, ex.: { $not: { $gt: 50 } }.
Q$not corresponde a documentos onde o campo está ausente?
ANão. Um campo ausente falha na condição interna, então a negação também não corresponde.
Q$not pode negar uma regex?
ASim, via { $not: { $regex: '...' } }, mas não como { $not: /padrão/ }.