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

369
Views
Ordenar esquema referenciado por fecha de creación en Mongoose

siguiente problema, en mi aplicación tengo publicaciones y cada publicación puede tener una variedad de comentarios. Estoy tratando de ordenar los comentarios por su fecha. Ya busqué y probé alguna de las soluciones, pero ninguna me funcionó.

Mis intentos no funcionan:

 const post = await Post.findById(id) .populate({ path: 'comments', options: { sort: { createdAt: -1 } }, }) const post = await Post.findById(id) .sort({ 'comments.createdAt': -1 })

En mi modelo de publicación si hace referencia al modelo de comentarios como sigue:

ESQUEMA DE COMENTARIO

 { comment: { type: String, required: true }, user: { type: mongoose.Schema.Types.ObjectId, required: true, ref: 'User', }, }, { timestamps: true } )

POSTE MODELO:

 const postSchema = mongoose.Schema( { user: { type: mongoose.Schema.Types.ObjectId, required: true, ref: 'User', }, image: { type: String, }, text: { type: String, required: true, }, workout: { type: mongoose.Schema.Types.ObjectId, ref: 'Workout', }, comments: [commentSchema], numComments: { type: Number, required: true, default: 0, }, likes: [likeSchema], numLikes: { type: Number, required: true, default: 0, }, }, { timestamps: true, } )

Gracias por cualquier ayuda por adelantado.

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

La pregunta es dónde desea que suceda la ordenación, para ordenarla en el lado del cliente, la solución más fácil será ordenar los comments de la matriz, ya que no está haciendo referencia a otro documento de esquema con ref , no es necesario populate (búsqueda), simplemente escriba otro then funciona así:

 const post = await Post.findById(p._id).then(result => { result.comments.sort((a, b) => a.createdAt > b.createdAt ? -1 : 1); return result; })

Para ordenar mientras se recupera, debe usar la función de modelo agregado y usar el patrón de etapas de canalización: $coincidir, $desenrollar, $ordenar, $agrupar. Pero es un camino complicado.

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!