MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Wie verweise ich auf ein anderes Schema in meinem Mongoose-Schema?

Sie können es mit Bevölkerung beschreiben

Das Auffüllen ist der Vorgang des automatischen Ersetzens der angegebenen Pfade im Dokument durch Dokumente aus anderen Sammlungen. Wir können ein einzelnes Dokument, mehrere Dokumente, ein einfaches Objekt, mehrere einfache Objekte oder alle von einer Abfrage zurückgegebenen Objekte füllen.

Angenommen, Ihr Ereignisschema ist wie folgt definiert:

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);

Um zu zeigen, wie populate verwendet wird, erstellen Sie zuerst ein Personenobjekt, aaron = new Person({firstname: 'Aaron'}) und ein Ereignisobjekt, event1 = new Event({title: 'Hackathon', location: 'foo'}) :

aaron.eventsAttended.push(event1);
aaron.save(callback); 

Wenn Sie dann Ihre Abfrage stellen, können Sie Referenzen wie folgt füllen:

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);
});