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

मोंगो कॉपी संग्रह और उपयोगकर्ता अनुमतियां

प्रति collection.copyTo() MongoDB 2.4 में प्रलेखन, यह शेल सहायक "सर्वर-साइड जावास्क्रिप्ट का उपयोग करके संग्रह से सभी दस्तावेज़ों को नए संग्रह में कॉपी करता है"।

मुझे उम्मीद है कि आपको unauthorized मिलने का कारण क्या होगा? त्रुटि इसलिए है क्योंकि सर्वर-साइड db.eval() आदेश पूर्ण व्यवस्थापक अनुमतियों की आवश्यकता है MongoDB 2.4 में (admin . पर कई भूमिकाएं) डेटाबेस)।

आप वास्तव में इस सहायक के स्रोत को mongo . में देख सकते हैं खोल अगर आप copyTo() invoke का आह्वान करते हैं बिना () . के :

> db.test.copyTo
function ( newName ){
    return this.getDB().eval(
        function( collName , newName ){
            var from = db[collName];
            var to = db[newName];
            to.ensureIndex( { _id : 1 } );
            var count = 0;

            var cursor = from.find();
            while ( cursor.hasNext() ){
                var o = cursor.next();
                count++;
                to.save( o );
            }

            return count;
        } , this.getName() , newName
    );
}

सर्वर-साइड के उपयोग के कारण db.eval() , कई महत्वपूर्ण चेतावनियां हैं पर copyTo() टाइप फ़िडेलिटी और लॉकिंग मुद्दों पर सावधानी सहित उपयोग। मेरा मानना ​​​​है कि यह सहायक केवल उत्पादन वातावरण के बजाय विकास वातावरण में अधिक खुली अनुमतियों के साथ उपयोग करने का इरादा रखता है।

mongo . से DIY कॉपी खोल

यह पूरी तरह से पागल विकल्प नहीं है :)। यहाँ mongo . के लिए एक सरल एक-लाइनर है खोल (source को बदलें और target संग्रह उपयुक्त के रूप में):

db.source.find().forEach( function(d) {db.target.insert(d)});

यदि आप नेटवर्क बैंडविड्थ के बारे में चिंतित हैं तो आप इसे mongo . से चला सकते हैं शेल जो आपके MongoDB सर्वर के लिए स्थानीय है।

mongodump के साथ कॉपी करें / mongorestore

संग्रह की प्रतिलिपि बनाने का एक बेहतर तरीका (हालांकि सीधे mongo . से नहीं खोल) mongodump . का उपयोग करना होगा &mongorestore :

$ mongodump -d test -c source 
$ mongorestore -d test -c target dump/test/source.bson                                                                                                                                            



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मुझे उपयोगकर्ता या अलग से एम्बेडेड, मोंगोडब में गतिविधियों की समयरेखा कहां रखनी चाहिए?

  2. मैं $Project के साथ मौजूदा स्ट्रिंग से नए फ़ील्ड कैसे बना सकता हूं?

  3. Android के लिए Google मानचित्र API के साथ स्थानों की खोज करना

  4. Node.js और MongoDB समय क्षेत्र समस्या UTC ड्राइवर द्वारा सही ढंग से परिवर्तित नहीं किया जा रहा है?

  5. नेवला अद्यतन 'तत्व को पार करने के लिए भाग (..) का उपयोग नहीं कर सकता