sql >> Database >  >> NoSQL >> MongoDB

Mongodb en Express

http://mongoosejs.com/docs/populate.html werkt uit met een heel mooi voorbeeld. Ik heb de essentie hier voor je uitgezocht

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

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

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

}

dus je hebt nu twee modellen verhaal en persoon waar verhaal naar persoon verwijst via het veld _creator.

om nu de _creator te vullen terwijl u door het verhaal zoekt, doet u het volgende:

{

Story
.findOne({ title: 'Once upon a timex.' })
.populate('_creator')
.exec(function (err, story) {
  if (err) return handleError(err);
  console.log('The creator is %s', story._creator.name);
  // prints "The creator is Aaron"
});
}

maar je moet er ook voor zorgen dat je de records goed hebt opgeslagen om ze op de juiste manier op te halen. tijdens het opslaan hoef je alleen maar de _id toe te wijzen. zie hieronder.

{
var aaron = new Person({ _id: 0, name: 'Aaron', age: 100 });

aaron.save(function (err) {
  if (err) return handleError(err);

  var story1 = new Story({
    title: "Once upon a timex.",
    _creator: aaron._id    // assign the _id from the person
  });

  story1.save(function (err) {
    if (err) return handleError(err);
    // thats it!
  });
});

}



  1. MongoDB-resultatenset voor Aggregate()

  2. Fout bij het invoegen van een document in MongoDB via Node.js

  3. Hoe om te gaan met koppeltekens in GraphQL Schema-definities

  4. MongoDB:Hoe het op één na hoogste salaris te vinden bij het verzamelen?