Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

359
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda