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

Dziedziczenie schematów Mongoose

Discriminators są mechanizmem dziedziczenia schematu. Umożliwiają one posiadanie wielu modeli z nakładającymi się schematami na tej samej podstawowej kolekcji MongoDB . zamiast różnych dokumentów. Wygląda na to, że źle rozumiesz discriminators mangusty. Oto jeden artykuł, który może pomóc w prawidłowym uchwyceniu.

Przewodnik po dyskryminatorach mangusty

Oto kilka przykładowych kodów, które spełnią Twoje wymagania, aby zapisać pochodny schemat jako oddzielne dokumenty

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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongo DB:Wstaw wszystkie dokumenty po ostatnim znanym

  2. Automatycznie przedawniaj dokumenty kolekcji MongoDB

  3. Jak wysłać wiele dokumentów za pomocą RMongo

  4. MongoDB findAndModify z wielu klientów

  5. Zarządzanie wieloma technologiami baz danych za pomocą ClusterControl