亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

mongoose如何做一對多查詢

mongoose如何做一對多查詢

侃侃爾雅 2019-03-18 14:34:09
業務背景有一個老師表teacher一個學生表student一個老師關聯多個學生現在要查詢老師的信息,以及所有學生的信息我的代碼// 老師表const teacherSchema = new mongoose.Schema({   name: { type: String },   students: [{ type: mongoose.Schema.Types.ObjectId, ref: 'student' }], });// 學生表const studentSchema = new mongoose.Schema({   name: { type: String },   teacher: { type: mongoose.Schema.Types.ObjectId, ref: 'teacher' }, });const Teacher = mongoose.model('teacher', teacherSchema);const Student = mongoose.model('student', studentSchema); (async function test() {  // 新增一個老師   const t = await Teacher.create({ name: '張老師' });  // 新增一個學生   const s = await Student.create({     name: '李四',     teacher: t._id,   });  // 將學生關聯到老師   t.students.push(s);  await t.save();  // 查詢老師信息   const teachers = await Teacher.find().populate('students');  console.log(teachers); }());輸入結果[    { students: [ [Object] ],     _id: 5c69e591510ea44574287fea,     name: '張老師',     __v: 1 } ]問題如果一個老師對應一千個學生,難道要把1000個學生給push到老師的students屬性里?這也太夸張了吧?
查看完整描述

2 回答

?
慕的地10843

TA貢獻1785條經驗 獲得超8個贊

  1. 你的t.students.push(s);寫法是不對的,應該是t.students.push(s._id);


查看完整回答
反對 回復 2019-03-18
?
紅顏莎娜

TA貢獻1842條經驗 獲得超13個贊

  1. 把1000個學生給老師,那就是循環1000次,然后在進行數據庫的存儲操作,可以采用異步方式進行避免堵塞


查看完整回答
反對 回復 2019-03-18
  • 2 回答
  • 0 關注
  • 1219 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號