MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

mongoose:điền vào mongoose không có bất kỳ ObjectId nào

Bạn có thể sử dụng khái niệm về Virtuals . Đây là cách nó diễn ra:

Sửa đổi tệp giản đồ của bạn như sau:

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

Trên tệp bạn đang cố gắng điền, hãy điền thông tin này vào phần khai báo:

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

Cuối cùng nhưng không kém phần quan trọng, nơi bạn muốn điền:

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

Tôi đã thử nghiệm giải pháp này cho một vấn đề mà tôi đã thực hiện, chỉ được sửa đổi để phù hợp với nhu cầu của bạn, vui lòng cho tôi biết nếu nó hoạt động với của bạn; nếu không, chúng ta có thể cùng nhau tìm ra cách để giải pháp của tôi phù hợp với nhu cầu của bạn.

Một số thông tin tham khảo ban đầu

  1. Điền mô hình mongoose với trường không phải là id



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Kiểm tra xem một Chỉ mục có tồn tại trong mongodb hay không

  2. Làm cách nào để đổi tên (các) trường bí danh trong khi tìm nạp nó từ MongoDB thông qua truy vấn sử dụng ổ đĩa gốc MongoDB-Node.JS?

  3. Làm thế nào để so sánh 2 bộ sưu tập mongodb?

  4. Cách tìm tên trường MongoDB ở độ sâu tùy ý

  5. Các giao dịch có hoạt động với tổng hợp mongodb $ merge không?