2011-08-16 13 views
5

मुझे अपने मोंगोडीबी डेटाबेस में सभी संग्रहों के माध्यम से पुन: प्रयास करने की आवश्यकता है और उस समय को प्राप्त करें जब संग्रह में से प्रत्येक संग्रह बनाया गया था (मुझे समझ में आता है कि मैं संग्रह में प्रत्येक ऑब्जेक्ट का टाइमस्टैम्प प्राप्त कर सकता हूं, लेकिन मैं उस मार्ग पर नहीं जाऊंगा यदि एक सरल/तेज विधि मौजूद है)।मुझे MongoDB C# ड्राइवर का उपयोग करके एक मोंगोडीबी संग्रह कैसे बनाया गया था?

MongoDatabase _database; 
// code elided 
var result = _database.GetAllCollectionNames().Select(collectionName => 
    { 
     _database.GetCollection(collectionName) //.{GetCreatedDate()) 
    }); 

उत्तर

5

जहां तक ​​मुझे पता है, मोंगोडीबी संग्रह निर्माण तिथियों का ट्रैक नहीं रखता है। हालांकि, यह स्वयं करना वास्तव में आसान है। तब

public static void CreateCollectionWithMetadata(string collectionName) 
{ 
    var result = _db.CreateCollection(collectionName); 
    if (result.Ok) 
    { 
     var collectionMetadata = _db.GetCollection("collectionMetadata"); 
     collectionMetadata.Insert(new { Id = collectionName, Created = DateTime.Now }); 
    } 
} 

जब भी आप जानकारी की जरूरत है सिर्फ collectionMetadata संग्रह क्वेरी: एक सरल विधि है, कुछ इस तरह जोड़ें, और इसका इस्तेमाल करते हैं जब भी आप एक नया संग्रह बनाने। या, यदि आप अपने उदाहरण में एक विस्तार विधि का उपयोग करना चाहते हैं, तो ऐसा कुछ करें:

public static DateTime GetCreatedDate(this MongoCollection collection) 
{ 
    var collectionMetadata = _db.GetCollection("collectionMetadata"); 
    var metadata = collectionMetadata.FindOneById(collection.Name); 
    var created = metadata["Created"].AsDateTime; 
    return created; 
} 
4

"निर्माण तिथि" संग्रह के मेटाडाटा का हिस्सा नहीं है:

यह आपको मैं क्या कर रहा हूँ की एक विचार देना चाहिए। जब संग्रह बनाया गया था तो संग्रह "पता" नहीं होता है। कुछ इंडेक्स में ObjectId() है जो टाइमस्टैम्प का तात्पर्य है, लेकिन यह लगातार और भरोसेमंद नहीं है।

इसलिए, मुझे विश्वास नहीं है कि यह किया जा सकता है।

+0

क्या हम उस जानकारी को ओप्लॉग से प्राप्त नहीं कर सकते? –

+0

समय के साथ ओप्लोग चक्र, इसलिए जब तक आप इसे बनाए गए पल में देखने के लिए नहीं होते हैं, यह बस वहां नहीं है। –

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