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

マングース:ObjectIdを持たないマングースにデータを入力します

    Virtualsの概念を使用できます 。方法は次のとおりです。

    スキーマファイルを次のように変更します。

    //---------------------------------------------------
    const gameSchema = new mongoose.Schema({
      title: String,
      rating: { type: Number, min: 0, max: 100 },
      genres: [Number],//here you have an array of id of type Number as yours, no ref
    });
    const GenreSchema = new mongoose.Schema({
      id: { type: Number },
      name: String,
      description: String,
    });
    
    gameSchema.virtual("games", {
      ref: "Genres",//this is the model to populate
      localField: "id",//the field used to make the populate, it is the field that must match on the aimed  Genres model <- here is the trick you want!!!  
      foreignField: "genres",//the field to populate on Games model
      justOne: false,
    });
    
     gameSchema.set("toObject", { virtuals: true });//if you are planning to use say console.log
     gameSchema.set("toJSON", { virtuals: true });//if you are planning to use say res.json
    
    mongoose.model("Games", gameSchema);
    mongoose.model("Genres", GenreSchema);
    //-------------------------------------------------
    

    入力しようとしているファイルで、これを宣言セクションに配置します:

    //-----------------------------------------------------
    const Games = mongoose.model("Games", gameSchema);
    //---------------------------------------------------
    

    最後になりましたが、データを入力する場所:

    //----------------------------------------------
    Games.find({})
      .populate("games")
      .exec(function (error, games) {
       //with games you can use things like game.field1, it is actually an JSON object! Print out games and see the fieds for your self, select one and call it using the dot notation! 
        console.log(games);
      });
    //---------------------------------------------
    

    私が行った問題についてこのソリューションをテストしました。ニーズに合わせて変更しました。問題が解決するかどうかをお知らせください。そうでない場合は、お客様のニーズを満たすために私のソリューションをどのように適合させるかを一緒に理解することができます。

    いくつかの初期参照

    1. マングースモデルにIDではないフィールドを入力します



    1. Redisを使用したDjangoでのキャッシュ

    2. Mongodbスキーマ設計

    3. mongoDB:$unwindを元に戻す方法

    4. MongoDB:配列内のインデックスによって参照される、配列内の単一のサブ要素を更新するにはどうすればよいですか?