2016-04-29 28 views
6

मौजूद नहीं है PyMongo का उपयोग कर एक अजगर स्क्रिप्ट में, एक सूचकांक लाइनPyMongo create_index केवल अगर यह

myCollection.create_index('Datetime', unique=True) 

हालांकि यह एक त्रुटि अगली बार स्क्रिप्ट क्योंकि सूचकांक निष्पादित किया जाता है फेंकता का उपयोग कर एक संग्रह के लिए बनाई गई है पहले से ही मौजूद।

प्रश्न: क्या create_index पर कॉल करना है या नहीं, यह तय करने से पहले किसी सूचकांक के अस्तित्व की जांच करने का कोई तरीका है?

उत्तर

9

आप index_information() विधि का उपयोग कर सकते हैं:

इस संग्रह के अनुक्रमित के बारे में जानकारी प्राप्त करें।

एक शब्दकोश देता है जहां कुंजी इंडेक्स नाम होते हैं (जैसा कि create_index() द्वारा लौटाया गया है) और मानों में प्रत्येक इंडेक्स के बारे में जानकारी होती है।

index_name = 'Datetime' 
if index_name not in myCollection.index_information(): 
    myCollection.create_index(index_name, unique=True) 

वहाँ भी list_indexes() विधि जो भी इसे हल करने के लिए इस्तेमाल किया जा सकता है, लेकिन उत्पादन प्रारूप कि index_information() के मामले में सुविधाजनक नहीं है।

और, ensure_index() विधि है, जो वास्तव में आप जो पूछ रहे हैं वह दिखता है, लेकिन यह विधि अब बहिष्कृत है।

+0

index_information() द्वारा दिए गए निर्देश की कुंजी इंडेक्स नाम हैं (जैसा कि create_index द्वारा लौटाया गया है), जो इंडेक्स कुंजी से अलग हैं। क्या आप वाकई अपना कोड काम करते हैं? ध्यान दें कि अनुक्रमणिका बनाते समय कस्टम नाम निर्दिष्ट करना संभव है। –

0

PyMongo (3.6.0) के वर्तमान संस्करण में, create_index बुला सूचकांक पुन: नहीं होगा अगर यह पहले से मौजूद है और एक त्रुटि फेंक नहीं होंगे। सूचकांक निर्माण को अनदेखा कर दिया जाएगा यदि सूचकांक पहले से मौजूद है।

संबंधित मुद्दे