Você pode descrevê-lo usando População
População é o processo de substituir automaticamente os caminhos especificados no documento por documentos de outras coleções. Podemos preencher um único documento, vários documentos, objeto simples, vários objetos simples ou todos os objetos retornados de uma consulta.
Suponha que seu Esquema de Evento seja definido da seguinte forma:
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 como o preenchimento é usado, primeiro crie um objeto de pessoa,
aaron = new Person({firstname: 'Aaron'})
e um objeto de evento, event1 = new Event({title: 'Hackathon', location: 'foo'})
:aaron.eventsAttended.push(event1);
aaron.save(callback);
Então, ao fazer sua consulta, você pode preencher referências 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);
});