Este capítulo apresenta os operadores lógicos do MongoDB, semelhantes às condições "and" e "or" no SQL.

Operadores lógicos suportados pelo MongoDB

Operador Descrição
$and Entrega documentos que satisfazem todas as condições especificadas, semelhante à condição "and" no SQL
$not Realiza a operação lógica NOT na expressão especificada
$or Entrega documentos que satisfazem pelo menos uma das condições especificadas, semelhante à condição "or" no SQL
$nor Entrega documentos que não satisfazem ambas as condições especificadas

$and

Sintaxe:

{ $and: [ { <expressão1> }, { <expressão2> }, ... , { <expressãoN> } ] }

Explicação:

  • <expressão> é uma subexpressão
  • $and recebe um array contendo um grupo de subexpressões, e todas as subexpressões devem ser satisfeitas

Exemplo:

db.inventory.find( { $and: [ { qty: { $lt : 10 } }, { qty : { $gt: 50 } }] } )

SQL equivalente:

select * from inventory where qty > 50 and qty < 10

$not

db.inventory.find( { price: { $not: { $gt: 1.99 } } } )

Explicação:

  • Se a condição for price > 1.99, então a operação NOT seria price <= 1.99.
  • Isso significa consultar documentos onde o preço é menor ou igual a 1.99 ou onde o campo de preço não existe.

Similar ao SQL:

select * from inventory where price <= 1.99

$or

Similar à condição "or" no SQL Sintaxe:

{ $or: [ { <expressão1> }, { <expressão2> }, ... , { <expressãoN> } ] }

Explicação:

  • <expressão> é uma subexpressão
  • $or recebe um array contendo um grupo de subexpressões e pelo menos uma subexpressão deve ser satisfeita

Exemplo:

db.inventory.find( { $or: [ { quantity: { $lt: 20 } }, { price: 10 } ] } )

SQL equivalente:

select * from inventory where quantity < 20 or price=10

$nor

Operação NOR lógica Sintaxe:

{ $nor: [ { <expressão1> }, { <expressão2> }, ... , { <expressãoN> } ] }

Exemplo:

db.inventory.find( { $nor: [ { price: 1.99 }, { sale: true } ]  } )

Explicação:

  • price != 1.99 e sale != true, ou
  • price != 1.99 e o campo sale não está presente, ou
  • o campo price não está presente e sale != true