MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

संख्या के साथ $multiply का उपयोग नहीं कर सकते

आप वर्तमान दस्तावेज़ के गुणों को अद्यतन() के भीतर से संदर्भित नहीं कर सकते हैं। आपको या तो सभी दस्तावेज़ों को दोहराना होगा और उन्हें अपडेट करना होगा या $multiply $project . के भीतर एकत्रीकरण में अंकगणितीय संक्रिया के रूप में व्यंजक num_tires . को गुणा करने के लिए पाइपलाइन स्थिरांक वाला क्षेत्र:

db.cars.aggregate([
     { 
         $match: { 
            make: 'Honda'
         } 
     },
     { 
          $project: { 
              make: 1, 
              model: 1, 
              num_tires: 1, 
              price: { 
                   $multiply: [ "$num_tires", 500 ] 
              } 
         } 
    }
]) 

या आप एक मनमाना फ़ील्ड शामिल करने के लिए अपनी स्कीमा अपडेट कर सकते हैं unit_price: {type: Number, default: 500} जिसे आप $multiply: [ "$num_tires", "$unit_price" ] के रूप में उपयोग कर सकते हैं $project . में पाइपलाइन।

एक अन्य विकल्प सभी मिलान किए गए दस्तावेज़ों के माध्यम से पुनरावृति करना और इस तरह सेव विधि का उपयोग करके अपडेट करना है:

var Car = require('car');
Car.find({make: 'Honda'}).snapshot().forEach(
    function (e) {
        // update document, using its own properties
        e.price = e.num_tires * 500;

        // remove old property
        delete e.price;

        // save the updated document
        Car.save(e);
     }
);

या $set . का उपयोग कर रहे हैं ऑपरेटर:

var Car = require('car');
Car.find().forEach(
    function (elem) {
        Car.update(
            {
                _id: elem._id,
                make: "Honda"
            },
            {
                $set: {
                    price: elem.num_tires * 500
                }
            },
            {multi: true},
            function(err) {
                 console.log("There's an error ", err);
            }
        );
    }
);

यदि आपके पास उस मूल्य के लिए डिफ़ॉल्ट मान था जो num_tires . के बराबर है , तो हो सकता है कि आप केवल price . को अपडेट करना चाहें उसी दस्तावेज़ में किसी अन्य फ़ील्ड को संदर्भित किए बिना, $mul ऑपरेटर:

var Car = require('car');
Car.update(
    {make: 'Honda'},
    {$mul: {price: 500}},
    {multi: true},
    function(err) {
       console.log("There's an error ", err);
    }
});



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. क्या मोंगोडम्प डेटाबेस को लॉक करता है?

  2. मैं Mongoose में अलग-अलग मानों के लिए क्वेरी कैसे करूं लेकिन सभी दस्तावेज़ वापस कर दूं?

  3. मानगो और जियो डेटा के साथ हमेशा 100 तक सीमित खोजें

  4. MongoDB में कई-से-अनेक संबंधों को डिज़ाइन करना (रिलेशनल टेबल के बजाय)

  5. CouchDB बनाम MongoDB:10 बातें जो आपको जाननी चाहिए