2012-10-22 9 views
8

मुझे मोंगोडीबी डेटाबेस के लिए डेटा माइग्रेशन और फिक्स्चर जैसी कई परिनियोजन स्क्रिप्ट बनाने की आवश्यकता है और मुझे मोंगोस एपीआई का उपयोग करके इंडेक्स को ड्रॉप करने के बारे में पर्याप्त जानकारी नहीं मिली। यह सुंदर सीधी-सपाट है जब आधिकारिक MongoDB एपीआई का उपयोग कर:मोंगोस का उपयोग कर इंडेक्स को छोड़ने का अनुशंसित तरीका क्या है?

निर्दिष्ट संग्रह पर सभी अनुक्रमित हटाने के लिए:

db.collection.dropIndexes();

हालांकि, मैं इस और मैं के लिए नेवला उपयोग करना चाहते हैं executeDbCommandthis post से अनुकूलित का उपयोग करने की कोशिश की, लेकिन कोई सफलता के साथ:

mongoose.connection.db.executeDbCommand({ dropIndexes: collectionName, index: '*' }, 
    function(err, result) { /* ... */ }); 

मैं offic का उपयोग करना चाहिए नोड.जेएस के लिए ial MongoDB एपीआई या मैं बस इस दृष्टिकोण में कुछ याद किया?

+0

क्या आपके executeDbCommand कोड को चलाने पर आपको कोई त्रुटि मिली? आपका वाक्यविन्यास थोड़ा सा दिखता है, क्या होगा यदि आप executeDbCommand चलाते हैं ({dropIndexes: collectionName, अनुक्रमणिका: '*'}, फ़ंक्शन (त्रुटि, परिणाम) {...}); ? मेरा मानना ​​है कि सही वाक्यविन्यास है कि फंक्शन के बाद घुंघराले ब्रेसिज़ में संलग्न पूर्ण कमांड है। – Louisa

उत्तर

20

संग्रह के लिए नेवला मॉडल के माध्यम से ऐसा करने के लिए, आप देशी संग्रह का dropAllIndexes कॉल कर सकते हैं:

MyModel.collection.dropAllIndexes(function (err, results) { 
    // Handle errors 
}); 

अद्यतन

dropAllIndexes की 2.x संस्करण में हटा दिया गया है देशी ड्राइवर, इसलिए dropIndexes का उपयोग इसके बजाय किया जाना चाहिए:

MyModel.collection.dropIndexes(function (err, results) { 
    // Handle errors 
}); 
1

ऐसा लगता है कि आप किसी दिए गए संग्रह पर सभी अनुक्रमणिका को छोड़ने का प्रयास कर रहे हैं।

मोंगोडीबी डॉक्स के अनुसार, this is the correct command

... मैं इस पोस्ट से executeDbCommand अनुकूलित का उपयोग करने की कोशिश की, लेकिन कोई सफलता के साथ:

वास्तव में यहाँ मदद करने के लिए हम अधिक जानकारी की आवश्यकता:

  • क्या विफल रही है? आपने "कोई सफलता" कैसे माप ली?
  • क्या आप आदेश 100% की पुष्टि कर सकते हैं कि आदेश चलाया गया? क्या आपने कॉलबैक में लॉग में आउटपुट किया था? क्या आपने err चर देखा है?
  • आप इंडेक्स बना रहे हैं? क्या आप पुष्टि कर सकते हैं कि आप उन्हें छोड़ने के बाद फिर से नहीं बना रहे हैं?
  • क्या आपने विशिष्ट इंडेक्स नाम सूचीबद्ध करते समय आदेश का प्रयास किया है? ईमानदारी से, आपको "*" का उपयोग नहीं करना चाहिए। आपको बहुत विशिष्ट इंडेक्स को हटाना और बनाना चाहिए।
+0

"कोई सफलता नहीं" मेरा मतलब है कि कोड बिना किसी त्रुटि के निष्पादित किया गया है, लेकिन मेरे द्वारा प्रदान किया गया कॉलबैक कभी नहीं कहा गया था। मुझे यह समस्या एक छोटी सी लिपि में है, जिसका एकमात्र ज़िम्मेदारी कुछ संबंधित संग्रहों को छोड़ना और बनाना है, जिसमें उनके संबंधित इंडेक्स शामिल हैं और उन संग्रहों को परीक्षण के लिए आवश्यक कुछ डेटा के साथ भरें। – npclaudiu