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

183
Visualizações
Ordene la fecha DD/MM en un .find() con Mongoose

Estaba tratando de encontrar cómo puedo ordenar la fecha de cumpleaños por día y mes con un .find() realizado por mongoose.
Código real:

 const embed2 = new MessageEmbed() .setColor('#FBC78E') .setTitle(`Liste des anniversaires de ${message.guild.name}`) birthday.find({}).then(data => { embed2 .setDescription(Array.from(data).map(u => `<@${u.user_id}> : ${u.birthday}`)) loading_message.delete(); message.guild.channels.resolve(args[1]).send(embed2) });

El problema es que cuando trato de agregar un .sort('cumpleaños') a mi .find(), solo filtra los días, pero no es lo que estoy buscando, aquí está el resultado de .find() (sin el .sort()):

 [ { _id: new ObjectId("620d763c86159915746f431b"), user_id: '493470054415859713', birthday: '04/11', __v: 0 }, { _id: new ObjectId("620d770505fa9fe0910968c0"), user_id: '933751655046979645', birthday: '18/05', __v: 0 }, { _id: new ObjectId("620d77575417ab94a5f2c837"), user_id: '735987183714041867', birthday: '15/12', __v: 0 }, { _id: new ObjectId("620d85fed17e202ed6d2b847"), user_id: '320851795058360331', birthday: '03/11', __v: 0 } ]

Resultado exceptuado:

 [ { _id: new ObjectId("620d770505fa9fe0910968c0"), user_id: '933751655046979645', birthday: '18/05', __v: 0 }, { _id: new ObjectId("620d85fed17e202ed6d2b847"), user_id: '320851795058360331', birthday: '03/11', __v: 0 }, { _id: new ObjectId("620d763c86159915746f431b"), user_id: '493470054415859713', birthday: '04/11', __v: 0 }, { _id: new ObjectId("620d77575417ab94a5f2c837"), user_id: '735987183714041867', birthday: '15/12', __v: 0 } ]

Como puede ver aquí, los cumpleaños están ordenados por día Y mes, que es lo que intento hacer. Gracias.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Cuando ordena los valores de campo "04/11", "18/05", "15/12", "03/11" - la ordenación ocurre como "03/11", "04/11", "15/12 ", "18/05". Es por los valores de cadena, donde "0" es menor que "1" y así sucesivamente. Dado que los datos de birthday tienen el formato "DD/MM", no puede obtener la clasificación correcta que busca, es decir, por MM y DD. El formato de datos debe ser "MM/DD". La forma de hacerlo es transformar el formato y luego ordenar con los valores recién formateados.

Por ejemplo, puede usar operadores de agregación para cambiar los valores de DD y MM en el campo de birthday y crear un nuevo campo llamado birthday_MM_DD y usarlo para ordenar. Tenga en cuenta que el código se ejecuta en mongosh o mongo shell.

 var pipeline = [ // Create a new birthday field with MM/DD format (a temporary field) { $addFields: { birthday_MM_DD: { $concat: [ { $substrCP: [ "$birthday", 3, 2 ] }, "/", { $substrCP: [ "$birthday", 0, 2 ] } ] } } }, // Sort with the newly formatted birthday field { $sort: { birthday_MM_DD: 1 } }, // Remove the temporary birthday field // (as it is no longer needed) { $unset: "birthday_MM_DD" }, ] db.collection.aggregate(pipeline)

El resultado tiene los documentos. formateado ordenado correctamente por birthday de nacimiento, como se esperaba: "18/05", "03/11", "04/11", "15/12"

about 4 years ago · Juan Pablo Isaza 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