Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

355
Vistas
¿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
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda