gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 16:24:03 25 4
gpt4 key购买 nike

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

我有这个文件:

"_id" : ObjectId("5674c86aba97df0800995da7"),
"role" : "tutor",
"schools" : [
"CHIJ Our Lady Of Good Counsel",
"Nanyang Technological University"]

我想从这个文档中更新 schools 数组,使其与 var 中的某个值相匹配。我试过这样:

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

最佳答案

您可以使用 $运算符(operator):

  • 对于 schools 变量中的每一项,
  • 查找记录,在schools数组字段中有对应的name
  • $set 使用 $ 位置运算符在匹配的 name 位置的新 value

代码:

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

关于javascript - 如何从匹配特定值的 MongoDB 文档更新数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34368096/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com