Javascript 如何从MongoDB文档更新匹配特定值的数组?
我是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 = [
"_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