[英]Bulk operations in mongodb
所以我有这个数组用于我需要使用批量操作存储的集合:
let arr = [
{
name: "John",
marks: 3
},
{
name: "Mike",
marks: 2
},
{
name: "Andrew",
marks: 6
},
{
name: "John",
marks: 8
},
{
name: "John",
marks: 4
},
{
name: "John",
marks: 2
},
{
name: "Mike",
marks: 1
},
{
name: "Andew",
marks: 3
},
{
name: "Mike",
marks: 6
}
]
所以我现在正在做的是:
for(var i = 0; i < arr.length; i++){
if(Students.findOne({name: arr[i].name})){
Students.update({name: arr[i].name}, {$inc: {marks: arr[i].marks]}});
}
else {
Students.insert({name: arr[i].name, marks: arr[i].marks]});
}
}
现在我有这么多的数组记录,我必须每分钟在 Mongodb 中添加。 所以我需要非常快地执行这个操作。 如何使用 Mongodb 批量操作实现相同的行为? 所以我有这个数组用于我需要使用批量操作存储的集合:
let arr = [
{
name: "John",
marks: 3
},
{
name: "Mike",
marks: 2
},
{
name: "Andrew",
marks: 6
},
{
name: "John",
marks: 8
},
{
name: "John",
marks: 4
},
{
name: "John",
marks: 2
},
{
name: "Mike",
marks: 1
},
{
name: "Andew",
marks: 3
},
{
name: "Mike",
marks: 6
}
]
所以我现在正在做的是:
for(var i = 0; i < arr.length; i++){
if(Students.findOne({name: arr[i].name})){
Students.update({name: arr[i].name}, {$inc: {marks: arr[i].marks]}});
}
else {
Students.insert({name: arr[i].name, marks: arr[i].marks]});
}
}
现在我有这么多的数组记录,我必须每分钟在 Mongodb 中添加。 所以我需要非常快地执行这个操作。 如何使用 Mongodb 批量操作实现相同的行为?
您可以在 updateOne 和 Update 中使用 upsert。 所以它看起来像
Students.update({name: arr[i].name}, {{upsert: true},{$set: data, $inc: {marks: arr[i].marks]}}});
如果您不想更改多条记录,我建议您使用 updateOne
https://www.mongodb.com/docs/manual/reference/method/db.collection.updateOne/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.