Mongoose está diseñado de tal manera que puede modelar sus tablas relacionalmente con relativa facilidad y poblar datos relacionales basados en el ref ha definido en el esquema. El problema es que debes tener cuidado con la población. Si rellena demasiado o anida sus poblaciones, se encontrará con cuellos de botella en el rendimiento.
Su enfoque en Edit 1 es en gran medida correcto, sin embargo, por lo general, no desea completar un ref remoto basado en un Number o establece el _id de un modelo a un Number ya que mongo usa su propio mecanismo hash para administrar el _id , normalmente sería un ObjectId con _id implícito. Ejemplo como se muestra a continuación:
var ScoreSchema = new mongoose.Schema({
user : { type: Schema.Types.ObjectId, ref: 'User' },
game : { type: Schema.Types.ObjectId, ref: 'Game' },
score: Number
});
Si por alguna razón necesita mantener una identificación de número para sus registros, considere llamarlo uid o algo que no entre en conflicto con mongo/mongoose internals. ¡Buena suerte!