sql >> Database >  >> NoSQL >> MongoDB

Mongoose-documentreferenties met een een-op-veel-relatie

Verwijs naar populatie, haal hier een voorbeeld uit Mongoose.

var mongoose = require('mongoose')
, Schema = mongoose.Schema

var personSchema = Schema({
  _id     : Schema.Types.ObjectId,
  name    : String,
  age     : Number,
  stories : [{ type: Schema.Types.ObjectId, ref: 'Story' }]
});

var storySchema = Schema({
  _creator : { type: Schema.Types.ObjectId, ref: 'Person' },
  title    : String,
  fans     : [{ type: Schema.Types.ObjectId, ref: 'Person' }]
});

var Story  = mongoose.model('Story', storySchema);
var Person = mongoose.model('Person', personSchema);

Dus het voorbeeld over, Story model slaat gerelateerde Person._id op in Story._creator . Wanneer u een document van Story . vindt , kunt u populate() . gebruiken methode om te definiëren welk attribuut in Person model dat u tegelijkertijd wilt ophalen, zoals:

Story.findOne({_id: 'xxxxxxx'}).populate('person', 'name age').exec(function(err, story) {
  console.log('Story title: ', story.title);
  console.log('Story creator', story.person.name);
});

Ik geloof dat dit is wat je zoekt. Of u kunt in plaats daarvan geneste verzamelingen gebruiken.



  1. hoe de caching vrij te geven die wordt gebruikt door Mongodb?

  2. Hoe voer ik Redis uit op Amazon OpsWorks voor een Rails-toepassing?

  3. Concurrerende consument op Redis Pub/Sub ondersteund?

  4. Waarom retourneert hasOwnProperty van het mangoestmodel false als de eigenschap bestaat?