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

178
Vistas
Encuentre todas las combinaciones mongodb posibles de dos campos

Tengo en la base de datos la siguiente matriz de objetos.

 [ { price: "1" type: "buy", }, { price: "2" type: "buy", }, { price: "3" type: "sell" }, { price: "4" type: "sell" } ]

¿Cómo puedo hacer una agregación para obtener una matriz de matrices con todas las combinaciones posibles (el precio podría ser un número aleatorio)

ocultar artículos con el precio de compra más alto

y ordénelos, de modo que los artículos con la mayor diferencia de precio estén en la parte superior

 [ [ { price: "1" type: "buy", }, { price: "4" type: "sell" } ], [ { price: "1" type: "buy", }, { price: "3" type: "sell" }, ], [ { price: "2" type: "buy", }, { price: "4" type: "sell" } ], [ { price: "2" type: "buy", }, { price: "3" type: "sell" }, ], ]
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Consulta

  • autobúsqueda y coincidencia si no es la misma identificación (evite el mismo artículo en el par)
  • mapa para agregar al resultado de la unión el elemento principal (el par siempre tendrá como primer miembro el que tenga el precio más alto (necesario para más adelante))
  • relajarse pares
  • agrupar pares para eliminar los duplicados (cada par aparecerá 2 veces, pero está ordenado del mapa para que podamos agruparlos por él)
  • encontrar la diferencia de precio, ordenar de forma descendente, desarmar el campo

*No estoy seguro de que haga todo lo que necesita, porque no entendí la parte hide items with the highest buy price de compra más alto es "2" y en sus resultados tiene estos artículos

Playmongo

 coll.aggregate( [{"$lookup": {"from": "coll", "pipeline": [{"$match": {"$expr": {"$ne": ["$$id", "$_id"]}}}, {"$project": {"_id": 0, "price": 1, "type": 1}}], "as": "pairs", "let": {"id": "$_id"}}}, {"$project": {"_id": 0, "pairs": {"$map": {"input": "$pairs", "in": {"$cond": [{"$gt": ["$$this.price", "$price"]}, [{"price": "$price", "type": "$type"}, "$$this"], ["$$this", {"price": "$price", "type": "$type"}]]}}}}}, {"$unwind": "$pairs"}, {"$group": {"_id": "$pairs"}}, {"$project": {"_id": 0, "pair": "$_id"}}, {"$set": {"priceDifference": {"$abs": {"$subtract": [{"$toDouble": {"$getField": {"field": "price", "input": {"$arrayElemAt": ["$pairs", 0]}}}}, {"$toDouble": {"$getField": {"field": "price", "input": {"$arrayElemAt": ["$pairs", 1]}}}}]}}}}, {"$sort": {"priceDifference": -1}}, {"$unset": ["priceDifference"]}])
about 4 years ago · Juan Pablo Isaza Denunciar
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