2017-08-18 21 views
0

に新しいレコードを追加し、私はどこ名 医師配列の下に、新たな医師の情報を追加することができません:私は、新たな医師の情報を追加するための以下のコードコードを使用していますIVF私の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) {}) 

ドクターアレイに名前が「ルートカナル」の新しい医師記録を追加する代わりに、治療アレイの下に新しいオブジェクトを作成します。

これを解決するお手伝いができますか? positional $ operatorを使用して

答えて

0

、次のようにトリックを行う必要があります。

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) {})