繁体   English   中英

如何从MongoDB文档更新匹配某个值的数组?

[英]How do I update an array from MongoDB document that match a certain value?

我是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)"]

您可以使用$运算符:

  • 对于schools变量中的每个项目,
  • schools数组字段中find具有相应name记录。
  • $set使用$位置运算符在匹配name的位置$setvalue

码:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM