Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

351
Views
¿Cómo puede obtener más de una condición $ o en una sola operación mongodb find ()?

Tengo una operación en la que intento limitar los resultados en una colección usando el operador $or , sin embargo, tengo más de un campo que necesita utilizar esta funcionalidad.

Ver consulta a continuación:

 db.items.find({//"isDeleted":false, "$or":[ {"$and":[{"passages.fleschKincaid.readingEase":{"$gte":90}}]}, {"$and":[{"passages.fleschKincaid.readingEase":{"$gte":60}},{"passages.fleschKincaid.readingEase":{"$lte":70}}]}, {"$and":[{"passages.fleschKincaid.readingEase":{"$gte":50}},{"passages.fleschKincaid.readingEase":{"$lte":60}}]} ], "$or":[{"$and": [{"contentBanks":{$in: element.statusIds}}]}]})

La primera condición recorre y agrega operadores gte/lte en función de ciertas condiciones, y la segunda o condición que he usado aquí está dentro de un bucle for que presiona un $and adicional para cada nuevo contentBank . Cada uno solo necesita cumplir una de las condiciones para mostrar como resultado, pero contentBank y passages.fleschKincaid.readingEase son mutuamente excluyentes, por lo que no se pueden agrupar en el mismo $o grupo.

es decir, si tengo un artículo, para que cumpla con mis condiciones en el ejemplo anterior, necesita un puntaje de readingEase de lectura de, digamos, 55, Y tener un banco de statusIds contentBank Debe cumplir con ambas condiciones, pero verifique los $or por separado.

Lo que termino es una consulta que sobrescribe las condiciones escritas y las trata como un gran $or , devolviendo resultados que pueden coincidir con un contentBank pero no estar dentro del rango de readingEase .

Cualquier ayuda sería muy apreciada. Estoy escribiendo esto con javascript, mongoose y mongodb. Si conoce una forma de obtener la consulta para tratarlos por separado, sería genial.

pd: estoy tratando de evitar que se llene de $and operadores, pero si esa es la única forma de hacerlo, puedo encontrar una manera de crear un objeto completamente nuevo y agregarlo. El único problema con eso es que la complejidad aumenta un poco porque todos los operadores de canalización se construyen dinámicamente, por lo que el $and el operador que envuelve todo requeriría una gran cantidad de cambios/sobrecarga para que funcione.

about 4 years ago · Juan Pablo Isaza
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!