Hola, solo necesita declarar el modelo de esquema con su nombre dinámico, así:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
// our schema
function dynamicSchema(prefix){
var addressSchema = new Schema({
dir : {type : String, required : true}, //los 2 nombres delimitados por coma (,) ej. Alberto,Andres
city : {type : String, required: true}, //la misma estructura que para los nombres ej. Acosta, Arteta
postal : {type : Number, required : true},
_home_type : {type : Schema.Types.ObjectId, required : true, ref : prefix + '.home_type'},
state : {type : String, required : true},
telefono : String,
registered : {type : Date, default: Date.now }
});
return mongoose.model(prefix + '.address', addressSchema);
}
//no we export dynamicSchema function
module.exports = dynamicSchema;
entonces en su código en cualquier lugar puede hacer esto:
var userAdress = require('address.js')(id_user);
var usrAdrs1 = new userAddress({...});
userAdrs1.save();
Ahora vaya a sus colecciones de mongo shell &list (use mydb y luego muestre las colecciones), verá una nueva colección para la dirección con el prefijo uid. De esta manera mongoose creará una nueva dirección de colección para cada uid de usuario diferente.