簡體   English   中英

貓鼬如何進行多次更新

[英]Mongoose how to do multiple updates

我很難找到一個解決方案來更新具有不同值的多個文檔。

我有一個應用程序,可以讓我想將數據庫中的每個數量減少一個的每一項出售。

var soldItems = 
[

    {
        "_id": "1"
        "name": "Foo",
        "price": 1.09
    },
    {
        "_id": "2",
        "name": "Bar",
        "price": 2.00
    }

]

var ids = [];

soldItems.forEach(function(item){

   ids.push(item._id);

});

我正在收集我的soldItems對象數組中的所有ID。

現在,我想知道數據庫中有多少項目數量,然后將數量減少一。

ModelItem.find({_id: {$in: ids}}, function(err, docs){
    if(err) throw err;

    docs.forEach(function(doc){

        soldItems.forEach(function(item){

            if(doc._id === item._id){
                doc.quantity += -1;
            }

        });            

    });

    Item.update({_id: {$in: ids}}, {$set: docs }, function(err){
        if(err) throw err;


    });

});

顯然這是錯誤的,因為$ set是在數組而不是對象中傳遞的。

我想知道如何減少數據庫中每個項目的數量,但同時我不想降低數據庫中的0個項目。

我敢肯定,我是從錯誤的角度看的。

謝謝。

請改用$inc運算符和multi選項:

Item.update({_id: {$in: ids}, quantity: {$gt: 0}}, // selection
            {$inc: {quantity: -1}}, // modifications
            {multi: true}); //options

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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