sql >> Database teknologi >  >> NoSQL >> MongoDB

At arve Mongoose-skemaer

Discriminators er en skema arvemekanisme. De gør det muligt for dig at have flere modeller med overlappende skemaer oven på den samme underliggende MongoDB-samling . frem for forskellige dokumenter. Det ser ud til, at du misforstår discriminators af mangust. Her er en artikel, der kan hjælpe dig med at fange den korrekt.

Vejledning til mongoosediskriminatorer

Her er nogle kodeeksempler for at opfylde dit krav, for at gemme det afledte skema som adskilte dokumenter

function AbstractEntitySchema() {   
    //call super        
    Schema.apply(this, arguments);     
    //add                                     
    this.add({                              
        entityName: {type: String, required: false},
        timestamp: {type: Date, default: Date.now},
        index: {type: Number, required: false},
        objectID: {type: String},
        id: {type: String}
    });                                     
};
util.inherits(AbstractEntitySchema, Schema);

//Message Schema
var MessageSchema = new AbstractEntitySchema();
MessageSchema.add({
    text: {type: String, required: true},
    author: {type: String, required: true},
    type: {type: String, required: false}
});

//Room Schema
var RoomSchema = new AbstractEntitySchema();
RoomSchema.add({
    name: {type: String, required: true},
    author: {type: String, required: false},
    messages : [MessageSchema],
});

var Message = mongoose.model('Message', MessageSchema);
var Room = mongoose.model('Room', RoomSchema);

// save data to Message and Room

var aMessage = new Message({
     entityName: 'message',
     text: 'Hello',
     author: 'mmj',
     type: 'article'
    });

 var aRoom = new Room({
     entityName: 'room',
     name: 'Room1',
     author: 'mmj',
     type: 'article'
 });

 aRoom.save(function(err, myRoom) { 
    if (err)
        console.log(err);
    else                                  
        console.log("room is saved"); 
 });

 aMessage.save(function(err) {
    if (err)
        console.log(err);
    else
        console.log('user is saved');
 });


  1. $and forespørgsel returnerer intet resultat

  2. Flere $elemMatch-udtryk til at matche matrixværdier ved hjælp af $all i MongoDB?

  3. CouchDB vs. MongoDB:10 ting, du bør vide

  4. MongoDB:WriteResult.getN() returnerer altid 0?