Mongodb: como usar o operador or ($or) em consultas


Você pode usar o operador $or no MongoDB para encontrar documentos que correspondam a qualquer um dos vários critérios.

Este operador usa a seguinte sintaxe básica:

 db.myCollection.find({
  “ $or ”: [
    {" field1 ": " hello "},
    {" field2 ": { $gte : 10 }}
  ]
})

Este exemplo específico procura todos os documentos na coleção chamada myCollection onde campo1 é igual a “olá” ou 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: 35, 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 OR 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” ou o valor do campo “points” é maior ou igual a 31:

 db.teams.find({
  “ $or ”: [
    {" team ": " Spurs "},
    {" points ": { $gte : 31 }}
  ]
})

Esta consulta retorna os seguintes documentos:

 { _id: ObjectId("62018750fd435937399d6b6f"),
  team: 'Mavs',
  points: 35,
  rebounds: 12 }
{ _id: ObjectId("62018750fd435937399d6b70"),
  team: 'Spurs',
  points: 20,
  rebounds: 7 }
{ _id: ObjectId("62018750fd435937399d6b71"),
  team: 'Spurs',
  points: 25,
  rebounds: 5 }
{ _id: ObjectId("62018750fd435937399d6b72"),
  team: 'Spurs',
  points: 23,
  rebounds: 9 }

Observe que cada documento na saída contém “Spurs” no campo equipe ou um valor maior ou igual a 31 no campo pontos.

Exemplo 2: usando o operador OR com mais de dois campos

O código a seguir mostra como encontrar todos os documentos da coleção times onde o campo “team” é igual a “Mavs” ou o valor do campo “pontos” é maior ou igual a 25 ou o valor do campo “rebotes” é menor que 8:

 db.teams.find({
  “ $or ”: [
    {" team ": " Mavs "},
    {" points ": { $gte : 25 }},
    {" rebounds ": { $lt : 8 }}
  ]
})

Esta consulta retorna o seguinte documento:

 { _id: ObjectId("62018750fd435937399d6b6e"),
  team: 'Mavs',
  points: 30,
  rebounds: 8 }
{ _id: ObjectId("62018750fd435937399d6b6f"),
  team: 'Mavs',
  points: 35,
  rebounds: 12 }
{ _id: ObjectId("62018750fd435937399d6b70"),
  team: 'Spurs',
  points: 20,
  rebounds: 7 }
{ _id: ObjectId("62018750fd435937399d6b71"),
  team: 'Spurs',
  points: 25,
  rebounds: 5 }

Observe que cada um desses documentos atende a um ou mais dos três critérios:

  • O campo “equipe” é igual a “ Mavs
  • O campo “pontos” possui valor maior ou igual a 25
  • O campo “rebotes” tem valor menor que 8

Nota : Você pode encontrar a documentação completa da função $or aqui .

Recursos adicionais

Os tutoriais a seguir explicam como realizar outras operações comuns no MongoDB:

MongoDB: Como usar o operador AND em consultas
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

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *