如何查找一个键,如果不存在,则添加带有值的键,如果存在,请更新 Meteor + mongoDB 中的值



我想更新我的quiz_score,如果qnNumber不存在,我想将qnNumber作为键推入,selectedAnsNum作为值,如果存在,我只想更新值

let quiz_score = {}
    quiz_score[qnNumber] = selectedAnsNum
    Meteor.users.update({
        _id: Meteor.userId(),
        "course_learn_list.course_id": courseId
    }, {
        $addToSet: {
            "course_learn_list.$.quiz_score": {
                quiz_score
            }
        }
    })

我不熟悉meteor,这里只是mongo shell下的示例代码。为了满足您的要求,我认为可以通过以下两个命令来完成。您可以将它们转换为流星命令。

// if we find the match course, update this one through `$set`
db.users.update({_id: id, 'course_learn_list.course_id': courseId},
    {$set: {'course_learn_list.$': {course_id: courseId, quiz_score: quiz_score}}});
// if we cannot find match course, insert this new one through `$addToSet`
db.users.update({_id: id, 'course_learn_list.course_id': {$ne: courseId}}, { 
    {$addToSet: {course_learn_list: {course_id: courseId, quiz_score: quiz_score}}});

最新更新