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

mangusta:wypełnij w mangusta, która nie ma żadnego ObjectId

Możesz użyć koncepcji Virtuals . Oto jak to działa:

Zmodyfikuj plik schematu w następujący sposób:

//---------------------------------------------------
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);
//-------------------------------------------------

W pliku, który próbujesz wypełnić, umieść to w sekcji deklaracji:

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

Ostatnie, ale nie mniej ważne, gdzie chcesz wypełnić:

//----------------------------------------------
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);
  });
//---------------------------------------------

Przetestowałem to rozwiązanie na problemie, który zrobiłem, po prostu dostosowanym do twoich potrzeb, daj mi znać, czy działa w twoich; jeśli nie, wspólnie dowiemy się, jak dopasować moje rozwiązanie do Twoich potrzeb.

Kilka wstępnych referencji

  1. Wypełnij model mangusty polem, które nie jest identyfikatorem



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongoDB wybór rekordu na podstawie dwóch warunków

  2. MongoDB – przynieś własne certyfikaty SSL

  3. menu mean.js nie działa Publicznie

  4. Partycjonowanie rekordów w kolekcji w MongoDB

  5. Wykonywanie zapytań, filtrowanie i aktualizowanie wielopoziomowych tablic zagnieżdżonych w MongoDB przy użyciu C#