So I have this array for my collection that I need to store using Bulk Operations:
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
}
]
So what I am currently doing now is:
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]});
}
}
Now I have so many records in array which I have to add in Mongodb every minute. So I need to perform this operation very fast. How can I achieve this same behavior using Mongodb Bulk Operations? So I have this array for my collection that I need to store using Bulk Operations:
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
}
]
So what I am currently doing now is:
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]});
}
}
Now I have so many records in array which I have to add in Mongodb every minute. So I need to perform this operation very fast. How can I achieve this same behavior using Mongodb Bulk Operations?
you can use upsert in updateOne and Update. so it will kinda look like
Students.update({name: arr[i].name}, {{upsert: true},{$set: data, $inc: {marks: arr[i].marks]}}});
i would recommend to use updateOne if you dont want want the possibility to change multiple records
https://www.mongodb.com/docs/manual/reference/method/db.collection.updateOne/
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.