Javascript 如何从MongoDB文档更新匹配特定值的数组?

Javascript 如何从MongoDB文档更新匹配特定值的数组?,javascript,mongodb,Javascript,Mongodb,我是mongoDB的新用户,对如何更新文档感到困惑 我有以下文件: "_id" : ObjectId("5674c86aba97df0800995da7"), "role" : "tutor", "schools" : [ "CHIJ Our Lady Of Good Counsel", "Nanyang Technological University"] 我想更新本文档中的schools数组,该数组与某个变量中的某个值相匹配。我试过这样做: var schools = [

我是mongoDB的新用户,对如何更新文档感到困惑

我有以下文件:

"_id" : ObjectId("5674c86aba97df0800995da7"),
"role" : "tutor",
"schools" : [ 
    "CHIJ Our Lady Of Good Counsel",
    "Nanyang Technological University"]
我想更新本文档中的schools数组,该数组与某个变量中的某个值相匹配。我试过这样做:

var schools = [{ "name": "Nanyang Technological University (NTU)", "value": "nanyang-technological-university-(ntu)" }];

db.getCollection('clients').update(
// query
{
    "schools" : schools.name
},

// update
{

    $set:{"schools":[schools.value]}
},

// options
{
    "multi" : true,  // update only one document
    "upsert" : false  // insert a new document, if no existing document match the query
}
);
但当然,它不起作用。有人能帮我吗?谢谢

我需要文档在更新后显示此值:

"_id" : ObjectId("5674c86aba97df0800995da7"),
"role" : "tutor",
"schools" : [ 
    "CHIJ Our Lady Of Good Counsel",
    "nanyang-technological-university-(ntu)"]
您可以使用操作员:

  • 对于
    变量中的每个项目
  • 查找
    记录,并在
    学校
    数组字段中找到相应的
    名称
  • $set
    使用
    $
    位置运算符在匹配的
    名称
    位置处设置新的
代码:

var schools=[{"name":"Nanyang Technological University", 
              "value":"nanyang-technological-university-(ntu)"}];


schools.forEach(function(i){
  db.clients.update({"schools.name":i.name},
            {$set:{"schools.$":i.value}},
            {"multi":true})
})

你能为你的问题发布一个预期的结果吗?当然。我已经用预期结果更新了问题。谢谢@Batshray