如何使用meteorjs在mongodb的更新语句中将ans
更改为其他int并在retry
中将courseList.quizScore
增加1?
下面是我的查询哪个不行,我正在使用$ set,这是正确的操作使用吗?我可以在一个更新语句中使用$ set和$ inc吗?
collection.jsx
Meteor.users.update({
_id: Meteor.userId(),
"courseList.courseId": courseId,
"courseList.quizScore.qnNum": qnNum,
}, {
$set: {
"courseList.quizScore.$.ans": selectedAns
}
})
MongoDB的
{
"_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"
}
]
}
答案 0 :(得分:1)
数据中的数组中有一个数组,除非您知道要更新的子数组中的位置,否则没有简单的方法可以引用嵌套的子数组quizScore
。
您可以通过courseList
访问外部数组$
,并通过位置访问内部数组quizScore
。以下是一个示例代码,用于在一个更新语句中使用quizeScore
和courseId
更新匹配$set
的{{1}}的第一个元素。
$inc