簡體   English   中英

mongodb 中的批量操作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM