MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak odwołać się do innego schematu w moim schemacie Mongoose?

Możesz to opisać, używając Populacja

Populacja to proces automatycznego zastępowania określonych ścieżek w dokumencie dokumentami z innych kolekcji. Możemy wypełnić pojedynczy dokument, wiele dokumentów, zwykły obiekt, wiele zwykłych obiektów lub wszystkie obiekty zwrócone z zapytania.

Załóżmy, że schemat wydarzenia jest zdefiniowany w następujący sposób:

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

Aby pokazać, jak używane jest wypełnienie, najpierw utwórz obiekt osoby, aaron = new Person({firstname: 'Aaron'}) oraz obiekt zdarzenia, event1 = new Event({title: 'Hackathon', location: 'foo'}) :

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

Następnie, tworząc zapytanie, możesz wypełnić odniesienia w następujący sposób:

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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Współbieżność w gopkg.in/mgo.v2 (Mongo, Go)

  2. znajdź identyfikator ostatniego poddokumentu wstawionego w manguście

  3. Sortowanie Mongodb bez uwzględniania wielkości liter

  4. zmiana typu mongodb na tablicę

  5. Jakie są zasady liczby mnogiej Mongoose (Nodejs)?