Capítulo 3: MongoDB - Consulta Condicional
Este capítulo introduz a consulta condicional do MongoDB, que é semelhante aos operadores de comparação, como igual, maior que e menor que, nas instruções SQL.
Operadores Condicional Suportados pelo MongoDB
Operador | Descrição |
---|---|
$eq | Igual, similar ao operador = em SQL |
$gt | Maior que, similar ao operador > em SQL |
$gte | Maior do que ou igual a, similar ao operador >= em SQL |
$in | Corresponde a um array, a qualquer valor, similar à consulta in em SQL |
$lt | Menor que, similar ao operador < em SQL |
$nin | Não corresponde a nenhum valor no array, similar ao operador not in em SQL |
Dados de Teste
Os dados da coleção de inventário são os seguintes
{ _id: 1, item: { name: "ab", code: "123" }, qty: 15, tags: [ "A", "B", "C" ] }
{ _id: 2, item: { name: "cd", code: "123" }, qty: 20, tags: [ "B" ] }
{ _id: 3, item: { name: "ij", code: "456" }, qty: 25, tags: [ "A", "B" ] }
{ _id: 4, item: { name: "xy", code: "456" }, qty: 30, tags: [ "B", "A" ] }
{ _id: 5, item: { name: "mn", code: "000" }, qty: 20, tags: [ [ "A", "B" ], "C" ] }
$eq (Corresponder Igualmente)
db.inventory.find( { qty: { $eq: 20 } } )
db.inventory.find( { "item.name": { $eq: "ab" } } )
// Abreviado, pode ignorar o operador $eq, qty = 20
db.inventory.find( { qty: 20 } )
Equivalente em SQL:
select * from inventory where qty = 20
// Este é apenas um exemplo, o SQL não suporta o formato de campos aninhados como item.name
select * from inventory where item.name = 20
$gt (Maior Que)
db.inventory.find( { qty: { $gt: 20 } } )
Equivalente em SQL:
select * from inventory where qty > 20
$gte (Maior Que ou Igual A)
db.inventory.find( { qty: { $gte: 20 } } )
Equivalente em SQL:
select * from inventory where qty >= 20
$in
Corresponde a um valor no array
db.inventory.find( { qty: { $in: [ 5, 15 ] } } )
Equivalente em SQL:
select * from inventory where qty in (5, 15)
$nin
Oposto ao operador $in
db.inventory.find( { qty: { $nin: [ 5, 15 ] } } )
Equivalente em SQL:
select * from inventory where qty not in (5, 15)
$lt (Menor Que)
db.inventory.find( { qty: { $lt: 20 } } )
Equivalente em SQL:
select * from inventory where qty < 20