Puede describirlo usando Población
La población es el proceso de reemplazar automáticamente las rutas especificadas en el documento con documentos de otras colecciones. Podemos completar un solo documento, varios documentos, un objeto sin formato, varios objetos sin formato o todos los objetos devueltos por una consulta.
Supongamos que su esquema de eventos se define de la siguiente manera:
var mongoose = require('mongoose')
, Schema = mongoose.Schema
var eventSchema = Schema({
title : String,
location : String,
startDate : Date,
endDate : Date
});
var personSchema = Schema({
firstname: String,
lastname: String,
email: String,
gender: {type: String, enum: ["Male", "Female"]}
dob: Date,
city: String,
interests: [interestsSchema],
eventsAttended: [{ type: Schema.Types.ObjectId, ref: 'Event' }]
});
var Event = mongoose.model('Event', eventSchema);
var Person = mongoose.model('Person', personSchema);
Para mostrar cómo se usa poblar, primero cree un objeto de persona, aaron = new Person({firstname: 'Aaron'})
y un objeto de evento, event1 = new Event({title: 'Hackathon', location: 'foo'})
:
aaron.eventsAttended.push(event1);
aaron.save(callback);
Luego, cuando realice su consulta, puede completar referencias como esta:
Person
.findOne({ firstname: 'Aaron' })
.populate('eventsAttended') // only works if we pushed refs to person.eventsAttended
.exec(function(err, person) {
if (err) return handleError(err);
console.log(person);
});