MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Попълнете модел мангуста с поле, което не е идентификатор

Това се поддържа от Mongoose 4.5 , и се наричавиртуална популация .

Трябва да дефинирате вашите отношения с външни ключове след вашите дефиниции на схеми и преди създаването на модели , като това:

// Schema definitions

BookSchema = new mongoose.Schema({
        ...,
        title: String,
        authorId: Number,
        ...
    },
    // schema options: Don't forget this option
    // if you declare foreign keys for this schema afterwards.
    {
        toObject: {virtuals:true},
        // use if your results might be retrieved as JSON
        // see http://stackoverflow.com/q/13133911/488666
        //toJSON: {virtuals:true} 
    });

PersonSchema = new mongoose.Schema({id: Number, ...});


// Foreign keys definitions

BookSchema.virtual('author', {
  ref: 'Person',
  localField: 'authorId',
  foreignField: 'id',
  justOne: true // for many-to-1 relationships
});


// Models creation

var Book = mongoose.model('Book', BookSchema);
var Person = mongoose.model('Person', PersonSchema);


// Querying

Book.find({...})
    // if you use select() be sure to include the foreign key field !
    .select({.... authorId ....}) 
    // use the 'virtual population' name
    .populate('author')
    .exec(function(err, books) {...})


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongodb задаване на уникално поле

  2. Предотвратяване на инжектиране на JavaScript NoSQL в MongoDB

  3. Изтриването на (издърпване) на документ в масив от Mongoose не работи с ObjectID

  4. До какво ниво MongoDB заключва записите? (или:какво означава за връзка

  5. Как да заявя MongoDB директно от Ruby, вместо да използвам Mongoid?