这是我的JSON响应的样子:
"_id" : 537,
"quizzes" : [
{
"wk" : 1,
"score" : [
10
]
},
{
"wk" : 2,
"score" : [
8
]
},
{
"wk" : 3,
"score" : [
5
]
},
{
"wk" : 4,
"score" : [
6
]
}
]
}
我试图更新其中一个对象内的得分数组,这是我的尝试:
db.collection('connect').update({_id: id}, {$push: { quizzes[0]: { score: 89 } }});
答案 0 :(得分:2)
请尝试以下更新:
db.collection("connect").update(
{
"_id": id
},
{
"$set": {
"quizzes.0.score.0": 89
}
}
);
使用 dot notation 访问数组元素并访问嵌入文档的字段。
要通过从零开始的索引位置访问数组元素, 将数组名称与点(。)和从零开始的索引连接起来 位置,并用引号括起来:
'<array>.<index>'
答案 1 :(得分:1)
我认为你在寻找
db.collection('connect').update({_id: id}, {$set: { "quizzes.0.score":89} })
更好的方法是不回复测验数组的索引并使用&#34; wk&#34;属性
db.collection('connect').update({_id: id,quizzes:{$elemMatch:{"wk":1}}}, {$set: { quizzes.$.score: 89 } }})