如何在mongoDB中更新数组中的多个记录

时间:2014-07-15 18:40:50

标签: node.js mongodb mongoose

我有一个类似的架构:

classID: String,

students: [

    {
       id: String,
       name: String,
       marks: Number,
       status: String
    }
]

现在,我要求更新状态为"通过"的所有学生记录。标记为35。

请告诉我这是最好的方法。

我尝试过:

$set: {"students.$.marks" : 0}

但它刚刚更新了第一张匹配的记录。

然后我发现我可以通过索引来做到这一点:

$set: {"students.0.marks" : 0}, 
$set: {"students.1.marks" : 0}

我能够更新前两条记录,如何更新数组中的所有记录或满足条件的记录?

1 个答案:

答案 0 :(得分:0)

首先根据您的条件获取所有记录然后循环记录,并在循环中更新记录。

students.find({makers > 35 }, function(err,data))

{     for loop {      更新记录     } }