对象

时间:2015-06-20 21:48:40

标签: javascript json mongodb

这是我的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  }  }});

2 个答案:

答案 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  }  }})