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

मूल्य के बजाय अभिव्यक्ति के साथ अद्यतन करें

मैं बस इस तरह से SQL के बराबर MongoDB की खोज करते हुए आया था:

update t
set c1 = c2
where ...

सर्जियो सही है कि आप किसी अन्य संपत्ति को सीधे अद्यतन में मान के रूप में संदर्भित नहीं कर सकते हैं। हालांकि, db.c.find(...) एक कर्सर लौटाता है और उस कर्सर में एक forEach होता है विधि :

तो आप इस तरह की बातें कह सकते हैं:

db.QUESTIONS.find({}, {_id: true, i_up: true, i_down: true}).forEach(function(q) {
    db.QUESTIONS.update(
        { _id: q._id },
        { $set: { i_pp: q.i_up * 100 - q.i_down * 20 } }
    );
});

MongoDB को छोड़े बिना उन्हें एक-एक करके अपडेट करने के लिए।

यदि आप मोंगोडीबी से कनेक्ट करने के लिए ड्राइवर का उपयोग कर रहे हैं तो मोंगोडीबी में जावास्क्रिप्ट की एक स्ट्रिंग भेजने का कोई तरीका होना चाहिए; उदाहरण के लिए, रूबी ड्राइवर के साथ आप उपयोग करेंगे eval :

connection.eval(%q{
    db.QUESTIONS.find({}, {_id: true, i_up: true, i_down: true}).forEach(function(q) {
        db.QUESTIONS.update(
            { _id: q._id },
            { $set: { i_pp: q.i_up * 100 - q.i_down * 20 } }
        );
    });
})

अन्य भाषाएं समान होनी चाहिए।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मैं जावा कोड का उपयोग करके मोंगोडब में एक फ़ील्ड को स्वतः कैसे बढ़ा सकता हूं?

  2. मोंगो ऑपरेशंस भूखा हो रहा है

  3. मोंगोडब जावा:सामान्य क्षेत्र के साथ पेरिस्ट पीओजेओ वर्ग

  4. कोणीय 4 . में मोंगोडब-सिलाई पुस्तकालय का उपयोग करना

  5. मोंगोइड हैश फील्ड पर प्रश्न