No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Operadores lógicos

24/30
Recursos

Aportes 8

Preguntas 3

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

  • $and => que cumpla las dos o más condiciones dadas.
  • $or => los que cumplan al menos una condición.
  • $nor => los que no cumplan con ninguna condición.
  • $not => excluye un elemento en especifico y no tiene forma de array

Y esta es la forma utilizando el $and implícito y $or explícito.

db.routes.find({ 
    airplane: "E70",
    $or: [
        { dst_airport: "BOG" },
        { src_airport: "BOG" }
    ]
})
use ("sample_training")

// and de forma implicita
// db.inspections.find({
//     sector: "Tax Preparers - 891",
//     result: "Unable to Locate"
// }).count()

// and de forma exlicita
// $and va dentro de un array [{}, {}, {}]
// db.inspections.find({
//     $and: [
//         {sector: "Tax Preparers - 891"},
//         {result: "Unable to Locate"}        
//     }]
// }).count() 6


// operadores de aca en adelante tienen que ser de forma explicita, no vienen incorporados como and
// or [{}, {}, {}]
// db.inspections.find({
//     $or: [
//         {sector: "Tax Preparers - 891"},
//         {result: "Unable to Locate"}        
//     ]
// }).count() 892

// $nor [{}, {}, {}] para que no incluya ciertos valores
// db.inspections.find({
//     $nor: [
//         {sector: "Tax Preparers - 891"},
//         {result: "Unable to Locate"}        
//     ]
// }).count() 79155 

// db.inspections.find({
//     $nor: [
//         {result: "No Violation Issued"},
//         {result: "Unable to Locate"}        
//     ]
// }   ,{ // projection para que solo traiga los resultados deseados
//     result: 1, 
//     _id: 0
// }
// )

// not no recibe un array directamente como parte de su ejecucion, se aplic hahcia un atributo
// db.inspections.find({
//     result: { $not: {$regex: /Unable to Locate/} }        
// })

Utilizando el $nor con projection explicito, me parece que asi es mejor.

db.inspections.find({
    $nor:[
        {result:"No Violation Issued"},
        {result:"Unable to Locate"}
    ]
}).projection({result:1,_id:0})

Podemos utilizar wildcards para los casos en los que no recordamos exactamente el nombre de esta forma:

use("sample_training")

db.inspections.find({
    sector: /Tax Preparers/i
})
```js use('sample_mflix'); db.movies.countDocuments(); // si admite filtros, exacto, mas lento use('sample_mflix'); db.movies.estimatedDocumentCount(); // no admite filtros, inexacto, rapido use('sample_mflix'); db.movies.countDocuments({year: 2000}); use('sample_mflix'); db.movies.count({year: 2000}); // obsoleto desde mongo 4.0 ```
```js // Find all teams from Italy or Spain (or) use("football"); db.teams.find({ $or: [{ country: "Italy" }, { country: "Spain" }] }); // Find all teams from England than start with "L" (and) use("football"); db.teams.find({ $and: [ { country: "England" }, { name: /^L/ } // Utilizamos una expresión regular para buscar nombres que comienzan con "L" ] }) // implicitamente se puede omitir el operador $and use("football"); db.teams.find({ country: "England" , name: /^L/ // Utilizamos una expresión regular para buscar nombres que comienzan con "L" }) ```

$and implícito y explícito