Estoy usando Mongoose y un MongoDB. Tengo tres esquemas de usuario y géneros y canciones.
const userSchema = new Schema({ name: String, age: String, favorite_genres: { type: Schema.Types.ObjectId, ref: 'Genre' } }); const genreSchema = new Schema({ name: String, songs: { type: Schema.Types.ObjectId, ref: 'Song' } }); const songSchema = new Schema({ title: String, artist: String, length: String, year: String });esos son esquemas simplistas, pero servirán para este propósito. Entonces, cuando consulto a un usuario, quiero completar el documento con los géneros favoritos. Pero allí (debido a la cantidad potencial de datos) no con las identificaciones de todas las canciones, sino solo con la cantidad de canciones. ¿Cómo puedo lograr eso?
Probé los virtuales pero no funcionan como yo quería. Lo que estoy buscando es algo como lo siguiente:
const user = await User.findById(userID).populate({path: 'favorite_genres', select: 'name', sizeof: 'songs'}).lean() // or const user = await User.findById(userID).populate({path: 'favorite_genres', select: ['name', 'songs.length']}).lean()¿Alguien tiene alguna idea?
Mira el enlace que adjunto. Es una pregunta similar, creo que encontrarás tu respuesta allí. Puedes encontrar tu respuesta aquí