Mongodb: como usar o operador and ($and) em consultas
Você pode usar o operador $and no MongoDB para pesquisar documentos que correspondam a vários critérios.
Este operador usa a seguinte sintaxe básica:
db.myCollection.find({ " $and ": [ {" field1 ": " hello "}, {" field2 ": { $gte : 10 }} ] })
Este exemplo específico procura todos os documentos na coleção chamada myCollection onde campo1 é igual a “olá” e campo2 tem um valor maior ou igual a 10.
Os exemplos a seguir mostram como usar essa sintaxe na prática com uma equipe de cobrança com os seguintes documentos:
db.teams.insertOne({team: " Mavs ", points: 30, rebounds: 8}) db.teams.insertOne({team: " Mavs ", points: 30, rebounds: 12}) db.teams.insertOne({team: " Spurs ", points: 20, rebounds: 7}) db.teams.insertOne({team: " Spurs ", points: 25, rebounds: 5}) db.teams.insertOne({team: " Spurs ", points: 23, rebounds: 9})
Exemplo 1: Use o operador AND com dois campos
O código a seguir mostra como encontrar todos os documentos da coleção times onde o campo “team” é igual a “Spurs” e o valor do campo “points” é maior ou igual a 22:
db.teams.find({ " $and ": [ {" team ": " Spurs "}, {" points ": { $gte : 22 }} ] })
Esta consulta retorna os seguintes documentos:
{ _id: ObjectId("6201824afd435937399d6b6c"), team: 'Spurs', points: 25, rebounds: 5 } { _id: ObjectId("6201824afd435937399d6b6d"), team: 'Spurs', points: 23, rebounds: 9 }
Observe que cada documento na saída contém “Spurs” no campo equipe e um valor maior ou igual a 22 no campo pontos.
Exemplo 2: Use o operador AND com mais de dois campos
O código a seguir mostra como encontrar todos os documentos da coleção times onde o campo “team” não é igual a “Mavs” e o valor no campo “pontos” é maior ou igual a 22 e o valor no campo “rebotes » o campo é menor que 7:
db.teams.find({ " $and ": [ {" team ": { $ne : " Mavs "}}, {" points ": { $gte : 22 }}, {" rebounds ": { $lt : 7 }} ] })
Esta consulta retorna o seguinte documento:
{ _id: ObjectId("6201824afd435937399d6b6c"), team: 'Spurs', points: 25, rebounds: 5 }
Observe que este é o único documento da coleção que atende a todos os três critérios:
- O campo “Equipe” não é igual a “ Mavs ”
- O campo “pontos” possui valor maior ou igual a 22
- O campo “rebotes” tem valor menor que 7
Observação : você pode encontrar a documentação completa da função $and aqui .
Recursos adicionais
Os tutoriais a seguir explicam como realizar outras operações comuns no MongoDB:
MongoDB: Como verificar se o campo contém uma string
MongoDB: Como usar uma consulta “NO IN”
MongoDB: Como procurar por “not null” em um campo específico