2017-08-18 25 views
0

我不能在那里的名字 下医生阵列添加新的医生信息:试管婴儿在我的MongoDB使用猫鼬添加新的记录到嵌套阵列

hospitalID: 10001, 
hospitalName: 'Renai MediCity', 
__v: 0, 
updated_at: 2017-08-18T17:34:53.784Z, 
Treatment: 
[ { name: 'Root Canal', 
    costUpperBound: 10000, 
    costLowerBound: 8000, 
    departmentId: 10001, 
    procedureid: 10001, 
    departmentName: 'Dental', 
    _id: 599725530c126c1efc43dc52, 
    doctor:[ { 
      profilepicdir:"smdir1", 
      doctorName:"Dr.vp2", 
      doctorId:10002,_id:5997255c0c126c1efc43dc57 

      }] }, 
    ], 

我使用下面的代码的代码添加一位新的医生信息

hospitalModel.findOneAndUpdate({ 
       "hospitalName": hospitalName, "hospitalContact.City": hospitalCity, "hospitalContact.country": hospitalCountry, "Treatment": { 
        $elemMatch: { "name": procedureName } 
       }}, 
       { 
        "$push": { 
         "Treatment": { 
          "doctor": { 
           "doctorId": doctorID, 
           "doctorName": req.body["doctorName"], 
           "profilepicdir": req.body["profilePicDirectory"], 
           "medinovitadoctorRating": parseInt(req.body["medinovitaDoctorRating"]), 
           "speciality": { 
            "specialityName": req.body["specialityName"] 
           } 
          } 
         } 
        } 
       }, 
       { returnOriginal: false, upsert: true }, function (err, doc) {}) 

而不是添加新的医生记录名称:'根管'到医生阵列,其创建新的对象在治疗阵列。

有人能帮我解决吗?

回答

0

使用positional $ operator,下面应该做的伎俩:

hospitalModel.findOneAndUpdate({ 
       "hospitalName": hospitalName, "hospitalContact.City": hospitalCity, "hospitalContact.country": hospitalCountry, "Treatment": { 
        $elemMatch: { "name": procedureName } 
       }}, 
       { 
        "$push": { 
         "Treatment.$.doctor": { 
          "doctorId": doctorID, 
          "doctorName": req.body["doctorName"], 
          "profilepicdir": req.body["profilePicDirectory"], 
          "medinovitadoctorRating": parseInt(req.body["medinovitaDoctorRating"]), 
          "speciality": { 
           "specialityName": req.body["specialityName"] 
          } 
         } 
        } 
       }, 
       { returnOriginal: false, upsert: true }, function (err, doc) {})