Gou*_*waj 0 mongodb mongodb-query
我的数据库中有一个学生集合,如下所示。
Mongodb 学生收藏:
{
name : 'Rahul',
age : '15'
}
{
name : 'Ajay',
age : '25'
}
{
name : 'Pinku',
age : '43'
}
{
name : 'Vinod',
age : '30'
}
Run Code Online (Sandbox Code Playgroud)
在为上述学生调用外部系统后,我得到了一组数据。
[
{'name':'Ajay','marks':20},
{'name':'Pinku','marks':12},
{'name':'Vinod','marks':50},
{'name':'Rahul','marks':80}
]
Run Code Online (Sandbox Code Playgroud)
我的任务是更新学生集合记录,并添加匹配学生的分数。有没有一种方法可以在一次 dml 操作中完成此操作,而不是循环遍历每个学生文档并用标记更新它。
输出应该是: Mongod Student Collection :
{
name : 'Rahul',
age : '15',
marks : 80
}
{
name : 'Ajay',
age : '25',
marks : 20
}
{
name : 'Pinku',
age : '43',
marks : 12
}
{
name : 'Vinod',
age : '30',
marks : 50
}
Run Code Online (Sandbox Code Playgroud)
注意:我想在 MondbDB Realm UI 中执行此操作,以自动化某些功能。
在这种情况下, bulkWrite会很有用。映射输入数组以生成 updateOne 操作数组,然后批量提交它们。
let input = [
{'name':'Ajay','marks':20},
{'name':'Pinku','marks':12},
{'name':'Vinod','marks':50},
{'name':'Rahul','marks':80}
];
let operations = input.map(function(student){
return {updateOne:{filter:{name:student.name},update:{$set:{marks:student.marks}}
};
db.collection.bulkWrite(operations);
Run Code Online (Sandbox Code Playgroud)