2016-03-19 11 views
1

Diğer int için ans'u nasıl değiştirebilirim ve değerini 1 courseList.quizScore içinde meteorjs ile mongodb içinde bir güncelleştirme deyimine göre nasıl artırırım?Mongodb ile meteorlarda iç içe geçmiş bir dizide bir varyansı nasıl ayarlayabilirim

Çalışmıyorken sorgum çalışmıyor $ set kullanıyorum, bu doğru kullanım mı? Bir güncelleme bildirisinde $ set ve $ inc kullanabilir miyim?

mongoDB Verilerinizde dizisi içinde bir dizisi vardır

{ 
    "_id": "yo8Mi2jKtoNSzgLDL", 
    "courseList": [ 
    { 
     "courseId": "nJmu5HW7g3wjWo47P", 
     "classId": "3RniSRC3NurDRwZ2x", 
     "quizScore": [ 
     { 
      "qnNum": 0, 
      "ans": 0, 
      "retry": 1 
     }, 
     { 
      "qnNum": 1, 
      "ans": 0, 
      "retry": 1 
     } 
     ], 
     "status": "Not Started" 
    }, 
    { 
     "courseId": "5ge2grte3wjWo4rh", 
     "classId": "bffbeRC3NurDRtbf", 
     "quizScore": [ 
     { 
      "qnNum": 0, 
      "ans": 1, 
      "retry": 1 
     }, 
     { 
      "qnNum": 1, 
      "ans": 2, 
      "retry": 3 
     } 
     ], 
     "status": "Not Started" 
    } 
    ] 
} 

cevap

1

Meteor.users.update({ 
    _id: Meteor.userId(), 
    "courseList.courseId": courseId, 
    "courseList.quizScore.qnNum": qnNum, 
}, { 
    $set: { 
     "courseList.quizScore.$.ans": selectedAns 
    } 
}) 

collection.jsx, biliyorsunuz sürece iç içe alt dizi quizScore başvurmak için kolay bir yolu yoktur güncellemek istediğiniz bu alt dizideki konumu.

courseList dış dizisine $ üzerinden erişebilir ve quizScore iç dizisine konum aracılığıyla erişebilirsiniz. İşte bir örnek kod, courseId ile eşleşen ilk öğeyi, bir güncelleştirme bildirimi içinde $set ve $inc kullanarak güncelleştirin.

Meteor.users.update(
      {_id: Meteor.userId(), 
      'courseList.courseId': courseId}, 
      {$set: {'courseList.$.quizScore.0.ans': selectedAns}, 
      $inc: {'courseList.$.quizScore.0.retry': 1} 
      }); 
İlgili konular