sql >> データベース >  >> NoSQL >> MongoDB

letの場合、配列に同じアイテムがある場合はインクリメントしません

    しばらく経ちましたが、それでもあなた(または他の誰か)に役立つかもしれないので...

    おそらくあなたはこれを試すことができます:

    var newValue = 1;
    var newSerialcode = req.body.serialCode; 
    var newBloodgroup = req.body.blood_group; 
    var newGetbloodcomponent = req.body.blood_component; 
    
    Bloodinventory.find({ blood_component : { $in : newGetbloodcomponent} ,blood_group: { $in :newBloodgroup},chapter: { $in: [id] }}, function(err, bloodinventoryDocs) {
    
        for(let bloodinventory of bloodinventoryDocs) {
            // === change starts here === //
                // filter into a new array all the places where this particular blood component occurs
                let all_occurences = newGetbloodcomponent.filter(function(b){
                    return b === bloodinventory.blood_component;
                });
    
                // to avoid incurring unnecessary processing and/or database costs, only continue if an occurence was actually found
                if(all_occurences.length > 0){
                    // increment it by that amount (which will be the number of items filtered into the array)
                    bloodinventory.num_stock = bloodinventory.num_stock + all_occurences.length;
                    // ^^ you could also write this as 'bloodinventory.num_stock += all_occurences.length;'
                
                    bloodinventory.save(function(err) {
                        if (err) {
                            console.log(err); 
                        } else {
                            console.log('success'); 
                        }
                    });
                };
            // === change ends here === //
        }  
    });
    



    1. ClouderaSearchとHBaseを使用したメールのインデックス作成

    2. 複数のフィールドとmongodbのwhere条件で区別されます

    3. Docker内のリモートサーバーへのredis接続タイムアウト

    4. ExpressとMongoDBを使用して、複数の個別のコレクションからフェッチします