$nor (NEM Lógico)
Última atualização: 2026-10-09
$nor (NEM Lógico)
$nor combina predicados; um documento corresponde apenas quando nenhum deles é verdadeiro. `{ $nor: [ { price: 1.99 }, { sale: true } ] }` corresponde a produtos que não custam $1.99 nem estão em promoção — o inverso de $or. Armadilha: um campo ausente falha em cada condição, então $nor inclui silenciosamente documentos sem os campos.
| Categoria | Lógica |
|---|---|
| Versão do MongoDB | 1.0+ |
| Idioma do Exemplo | mongosh (Shell) |
📝 Sintaxe
{ $nor: [ { <condição1> }, { <condição2> }, ... ] }
⚙️ Parâmetros
| array de condições | Uma matriz de predicados de consulta; nenhum deles pode ser verdadeiro. |
|---|
Retorno:Cursor dos documentos correspondentes
▶ Exemplo
Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):
// $nor: price não é 1.99 e não está em promoção
db.products.find({
$nor: [
{ price: 1.99 },
{ sale: true }
]
})
Saída:
// Retorna produtos que não custam $1.99 nem estão em promoção; note que documentos sem o campo sale também correspondem
📌 Notas
- Um campo ausente falha em cada condição, então $nor inclui documentos com campo ausente (armadilha clássica)
- Para excluir campos ausentes, adicione $exists: true a cada condição
- $nor nega vários predicados; $not nega um único operador de campo
🏷️ 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 $nor e $not?
A$nor exige que nenhum de vários predicados seja verdadeiro; $not nega uma expressão de operador.
QPor que $nor retorna documentos com o campo ausente?
AUm campo ausente não satisfaz nenhuma condição, e $nor exige que nenhuma seja satisfeita — então esses documentos são incluídos.
Q$nor pode aninhar $or?
ASim, cada elemento dentro de $nor pode ser um predicado complexo.