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

マングーススキーマで別のスキーマを参照するにはどうすればよいですか?

    人口を使用して説明できます

    ポピュレーションは、ドキュメント内の指定されたパスを他のコレクションのドキュメントに自動的に置き換えるプロセスです。単一のドキュメント、複数のドキュメント、プレーンオブジェクト、複数のプレーンオブジェクト、またはクエリから返されたすべてのオブジェクトにデータを入力できます。

    イベントスキーマが次のように定義されているとします。

    var mongoose = require('mongoose')
      , Schema = mongoose.Schema
    
    var eventSchema = Schema({
        title     : String,
        location  : String,
        startDate : Date,
        endDate   : Date
    });
    
    var personSchema = Schema({
        firstname: String,
        lastname: String,
        email: String,
        gender: {type: String, enum: ["Male", "Female"]}
        dob: Date,
        city: String,
        interests: [interestsSchema],
        eventsAttended: [{ type: Schema.Types.ObjectId, ref: 'Event' }]
    });
    
    var Event  = mongoose.model('Event', eventSchema);
    var Person = mongoose.model('Person', personSchema);
    

    ポピュレートがどのように使用されるかを示すには、最初に人物オブジェクトを作成します。aaron = new Person({firstname: 'Aaron'}) およびイベントオブジェクト、event1 = new Event({title: 'Hackathon', location: 'foo'})

    aaron.eventsAttended.push(event1);
    aaron.save(callback); 
    

    次に、クエリを実行するときに、次のように参照を入力できます。

    Person
    .findOne({ firstname: 'Aaron' })
    .populate('eventsAttended') // only works if we pushed refs to person.eventsAttended
    .exec(function(err, person) {
        if (err) return handleError(err);
        console.log(person);
    });
    


    1. Linuxでエラーmongodが停止しているのに、サブシステムがロックされ、ジャーナルファイル用の空き領域が不足しているのはなぜですか?

    2. 異なるマシンでのRedisレプリケーションの使用(マルチマスター)

    3. Mongodbが起動しません

    4. 他のコンテナからのDockermongoイメージ「接続が拒否されました」