EDITAR
repositorio de reproducción mínima
Es más fácil de explicar en código que en inglés. El siguiente código funciona, pero parece que tiene que haber una manera más fácil, más MongoDBy/mongoosy...
// recipeModel.js, relevant part of the schema equipments: [{ _id: { type: Schema.Types.ObjectId, ref: 'equipments', }, quantity: { type: Number, required: true, }, }], // recipeController.js const equipmentsWorkaround = recipe => Object.assign({}, recipe.toObject(), { equipments: recipe.toObject().equipments.map(equip => ({ quantity: equip.quantity, name: equip._id.name, _id: equip._id._id, })), }) const getItem = (req, res, next) => { Recipes.findById(req.params.id) .populate('equipments._id') .then(equipmentsWorkaround) // <--- ugh ... .then(recipe => res.json(recipe)) .catch(next) } Sé cómo hacer una ref "convencional" en mongoose, pero ¿lo que busco aquí es posible en mongo?
resultado deseado:
equipments: [ { quantity: 1, name: "Pan", _id: 'some mongo object here...' }, { quantity: 3, name: "Big Knife", _id: 'some mongo object here...' } ]