sql >> Database >  >> NoSQL >> MongoDB

Hoe kan ik verwijzen naar een ander schema in mijn Mongoose-schema?

Je kunt het beschrijven met Bevolking

Populatie is het proces waarbij de opgegeven paden in het document automatisch worden vervangen door document(en) uit andere verzameling(en). We kunnen een enkel document, meerdere documenten, gewoon object, meerdere platte objecten of alle objecten invullen die door een query worden geretourneerd.

Stel dat uw gebeurtenisschema als volgt is gedefinieerd:

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

Om te laten zien hoe invullen wordt gebruikt, maakt u eerst een persoonsobject, aaron = new Person({firstname: 'Aaron'}) en een gebeurtenisobject, event1 = new Event({title: 'Hackathon', location: 'foo'}) :

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

Wanneer u uw vraag stelt, kunt u referenties als volgt invullen:

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


  1. Hoe maak je een gedistribueerd slot aan met Redis?

  2. Fout 99 bij het verbinden met localhost:6379. Kan het aangevraagde adres niet toewijzen

  3. Splits string in een array van substrings of karakters in MongoDB

  4. Hoe maak je verbinding met mongodb met sailsjs v0.10?