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

362
Views
De los registros mostrar solo el que tiene el precio más alto

Tengo una aplicación vanilla js con express en el backend y mongoDB. Básicamente un constructor de restaurantes, cada cliente puede reservar una mesa con formulario. Las entradas son el nombre, el cuadro de selección con las tablas disponibles y el precio de oferta. La oferta significa que el cliente con la oferta más alta para la mesa ganará la mesa y los demás la perderán.

¿Cómo puedo obtener solo el cliente con la oferta más alta para la tabla x?

Por ejemplo, si tengo 3 clientes en el siguiente fragmento reservado para tableID "2", ¿cómo puedo obtener solo el que tiene la oferta más alta?

Imaginemos una carga útil como esta:

 const bookings = [ { customerName: 'Joe', bidValue: 178, // for example in $ - dollars tableID: 2 }, { customerName: 'Frank', bidValue: 212, // for example in $ - dollars tableID: 2 }, { customerName: 'Martin', bidValue: 123, // for example in $ - dollars tableID: 2 }, { customerName: 'John', bidValue: 15, // for example in $ - dollars tableID: 1 }, { customerName: 'Gino', bidValue: 87, // for example in $ - dollars tableID: 1 }, { customerName: 'Patrick', bidValue: 23, // for example in $ - dollars tableID: 3 }, ];
over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Debe utilizar la función de clasificación (1 ascendente -1 descendente).

 db.bookings.find().sort( { "bidValue": 1 } )
  • Más información sobre la clasificación
over 4 years ago · Santiago Trujillo Report

0

Para obtener solo el valor más alto, debe usar $sort y $limit de esta manera:

  • Primero $match para obtener la mesa en la que puede obtener la oferta más alta.
  • Luego $sort descendente para obtener el valor más alto en la primera posición
  • Y $limit para generar solo el primer valor (es decir, el más alto)
 db.collection.aggregate( {"$match": {"tableID": 2}}, {"$sort": {"bidValue": -1}}, {"$limit": 1})

Ejemplo aquí

Y, para obtener el valor más alto para cada tabla, también necesita $group stage en la canalización de agregación.

En este caso, la consulta es un poco diferente.

  • Primero $sort para obtener el valor más alto en la parte superior y luego
  • $group por tableId .
  • Y use $first para obtener el valor máximo porque se ordenan, entonces, el primer elemento será el deseado.
 { "$sort": {"bidValue": -1} }, { "$group": { "_id": "$tableID", "customerName": {"$first": "$customerName"}, "bidValue": {"$first": "$bidValue"} } })

Ejemplo aquí

over 4 years ago · Santiago Trujillo Report
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!