Seleciona os documentos em que o valor do atributo filtrado é menor do que (<) o valor especificado:
db.inventory.find({ qty: { $lt: 20 } })
Essa consulta selecionará todos os documentos na coleção inventory cujo valor do atributo qty é menor do que 20.
Seleciona os documentos em que o valor do atributo filtrado é menor ou igual que (<=) o valor especificado:
db.inventory.find({ qty: { $lte: 20 } })Essa query selecionará todos os documentos na coleção inventory cujo valor do atributo qty é menor ou igual a 20.
Seleciona os documentos em que o valor do atributo filtrado é maior do que (>) o valor especificado:
db.inventory.find({ qty: { $gt: 20 } })Essa query selecionará todos os documentos na coleção inventory cujo valor do atributo qty é maior do que 20.
Seleciona os documentos em que o valor do atributo filtrado é maior ou igual que (>=) o valor especificado:
db.inventory.find({ qty: { $gte: 20 } })Essa query selecionará todos os documentos na coleção inventory cujo valor do atributo qty é maior ou igual a 20.
Seleciona os documentos em que o valor do atributo filtrado é igual (=) ao valor especificado.Esse operador é equivalente ao filtro { campo: <valor> } e não tem nenhuma diferença de performance.
db.inventory.find({ qty: { $eq: 20 } })ou
db.inventory.find({ qty: 20 })Essa query selecionará todos os documentos na coleção inventory cujo valor do atributo qty é igual a 20.
db.inventory.find({ qty: { $ne: 20 } })Essa query selecionará todos os documentos na coleção inventory cujo valor do atributo qty é diferente de 20, incluindo os documentos em que o atributo qty não existe
db.inventory.find({ qty: { $in: [ 5, 15 ] } })Essa query selecionará todos os documentos na coleção inventory cujo valor do atributo qty é 5 ou 15
Seleciona os documentos em que o valor do atributo NÃO é igual ao especificado no array, ou o campo não existe:
db.inventory.find({ qty: { $nin: [ 5, 15 ] } })Essa query selecionará todos os documentos na coleção inventory cujo valor do atributo qty é diferente de 5 e 15.Esse resultado também inlcui os documentos em que o atributo qty não existe.
Sintaxe:
{ campo: { $exists: <boolean> } }Quando o <boolean> é verdadeiro (true), o operador $exists encontra os documentos que contêm o atributo, incluindo os documentos em que o valor do atributo é igual a null. Se o <boolean> é falso (false), a consulta retorna somente os documentos que não contêm o atributo.
db.inventory.find({ qty: { $exists: true } })
Essa consulta selecionará todos os documentos na coleção inventory em que o atributo qty existe.
Você também pode combinar operadores, como no exempo abaixo:
db.inventory.find({ qty: { $exists: true, $nin: [ 5, 15 ] } })
Essa consulta selecionará todos os documentos na coleção inventory em que o atributo qty existe E seu valor é diferente de 5 e 15
O operador $not executa uma operação de NEGAÇÃO no <operador ou expressão> especificado e seleciona os documentos que não correspondam ao <operador ou expressão>. Também inclui os documentos que não contêm o atributo:
db.inventory.find({ price: { $not: { $gt: 1.99 } } })Essa consulta selecionará todos os documentos na coleção inventory cujo valor do atributo price é menor ou igual a 1.99(não é maior que 1.99) ou em que o atributo price não existe.
a expressão { $not: { $gt: 1.99 } } retorna um resultado diferente do operador $lte. Ao utilizar { $lte: 1.99 }, os documentos retornados serão somente aqueles em que o campo price existe e cujo valor é menor ou igual a 1.99.
O operador $or executa a operação lógica de OU em um array de uma ou mais expressões e seleciona os documentos que satisfaçam ao menos uma das expressões:
Sintaxe:
{ $or: [{ <expression1> }, { <expression2> }, ... , { <expressionN> }] }
db.inventory.find({ $or: [{ qty: { $lt: 20 } }, { price: 10 }] })
Essa consulta selecionará todos os documentos na coleção inventory cujo valor do atributo qty é menor do que 20 ou o valor do atributo price é igual a 10 .
O operador $or também executa uma operação lógica NEGAÇÃO porém, em um array de uma ou mais expressões, e seleciona os documentos em que todas essas expressões falhem, ou seja, seleciona os documentos em que todas as expressões desse array sejam falsas:
Sintaxe:
{ $nor: [ { <expressão1> }, { <expressão2> }, ... { <expressãoN> } ] }
db.inventory.find({ $nor: [{ price: 1.99 }, { sale: true }] })
Essa query retorna todos os documentos da coleção inventory que:
- Contêm o atributo
pricecom o valor diferente de 1.99 e o atributosalecom o valor diferente de true; - Ou contêm o atributo
pricecom valor diferente de 1.99 e não contêm o atributosale; - Ou não contêm o atributo
pricee contêm o atributosalecom valor diferente de true; - Ou não contêm o atributo
pricee nem o atributosale.
O operador $and executa a operação lógica E num array de uma ou mais expressões e seleciona os documentos que satisfaçam todas as expressões no array. O operador $and usa o que chamamos de avaliação em curto-circuito (short-circuit evaluation). Se alguma expressão for avaliada como falsa, o MongoDB não avaliará as expressões restantes, pois o resultado final sempre será falso independentemente do resultado delas.
Sintaxe:
{ $and: [{ <expressão1> }, { <expressão2> } , ... , { <expressãoN> }] }
db.inventory.find({
$and: [
{ price: { $ne: 1.99 } },
{ price: { $exists: true } }
]
})
Essa consulta selecionará todos os documentos na coleção inventory em que o valor do atributo price é diferente de 1.99 e o atributo price existe.
db.inventory.find({
$and: [
{ price: { $gt: 0.99, $lt: 1.99 } },
{
$or: [
{ sale : true },
{ qty : { $lt : 20 } }
]
}
]
})
Essa consulta seleciona todos os documentos da coleção inventory em que o valor do campo price é maior que 0.99 e menor que 1.99, E o valor do atributo sale é igual a true, OU o valor do atributo qty é menor do que 20. Ou seja, essa expressão é equivalente a (price > 0.99 E price < 1.99) (onde o E está implícito na vírgula aqui { $gt: 0.99, $lt: 1.99 }) E (sale = true OU qty < 20).
Sintaxe:
db.colecao.find().sort({ "campo": "1 ou -1"})
Quando existe a necessidade de ordenar os documentos por algum atributo, o método sort() se mostra muito útil. Usando um valor positivo (1) como valor do atributo, os documentos da consultas são ordenados de forma crescente ou alfabética (também ordena por campos com strings). Em complemento, usando um valor negativo (-1), os documentos de saída estarão em ordem decrescente ou contra alfabética.
Esse método pode ser combinado com o método find():
db.example.find({}, { "value": 1, "name": 1 }).sort({ "value": -1, "name": 1 })
O sort() só pode ser usado se tiver algum resultado de busca antes:
db.colecao.find().sort({ nomeDoAtributo: 1 }) // certo
db.colecao.sort({ nomeDoAtributo: 1 }) // errado
deleteOne() e o deleteMany(). Os dois métodos aceitam um documento como parâmetro, que pode conter um filtro simples ou até mesmo um conjunto de expressões para atender aos critérios de seleção.
Remove apenas um documento, que deve satisfazer o critério de seleção, mesmo que muitos outros documentos também se enquadrem no criterio. Se nenhum valor for passado como parâmetro, a operação removerá o primeiro documento da coleção. O exemplo abaixo remove o primeiro documento da coleção inventory em que o atributo status é igual a D:
db.inventory.deleteOne({ status: "D" })
Esse método remove todos os documentos que satisfaçam o critério de seleção. O exemplo abaixo remove todos os documentos da coleção inventory em que o atributo status é igual a A:
db.inventory.deleteMany({ status : "A" })
Para remover todos os documentos da coleção, basta não passar nenhum parâmetro para o método deleteMany():
db.inventory.deleteMany({})