sql >> データベース >  >> NoSQL >> MongoDB

マングーススキーマの継承

    Discriminators スキーマ継承メカニズムです。これらを使用すると、同じ基盤となるMongoDBコレクションの上に重複するスキーマを持つ複数のモデルを作成できます。 。別のドキュメントではなく。 discriminatorsを誤解しているようです マングースの。これは、正しく理解するのに役立つ記事の1つです。

    マングース弁別者ガイド

    派生スキーマを個別のドキュメントとして保存するための、要件を満たすためのコードサンプルを次に示します

    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. KubernetesでMongoレプリカセットをどのように設定しますか?

    2. MongoClientクラスとMongoDB\Driver\Managerクラス

    3. MongoDBAuthがBitnamiMEANスタックイメージでユーザー名を見つけられない

    4. Railsのモンゴイド基準は関連付けによって検索されます