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

Mongodb डंप कर सकता है लेकिन से रिस्टोरिंग एरर को स्टोर नहीं कर सकता है, एक इंसर्ट बहुत बड़ा है

मेरा समाधान बीएसओएन फाइलों (पायथन के साथ) को मैन्युअल रूप से खोलना था, बड़े दस्तावेजों को ढूंढना और इसके कुछ हिस्से को हटाना, फिर बीएसओएन ऑब्जेक्ट को एक नई बीएसओएन फाइल में लिखना और संपादित बीएसओएन फाइल लोड करना था, जिसे सफलतापूर्वक मोंगो में संग्रहीत किया गया था।

यह बिना बदले सिस्टम में डंप किए गए डीबी को लोड करने में सक्षम होने की मेरी इच्छा को पूरा नहीं करता है!

Python3:

import bson
from pprint import pprint

def get_bson_data(filename):
    with open(filename, "rb") as f:
        data = bson.decode_all(f.read())

    return data


def report_problematics_documents(data):
    problematics = []

    for item in data:
        if is_too_big(item):
            print(item)input("give me some more...")
            input("give me some more...")
            problematics.append(item)

    print(f"data len: {len(data)}")
    print(f"problematics: {problematics}")
    print(f"problematics len: {len(problematics)}")
        

def shrink_data(data):
    for i,  item in enumerate(data):
        if is_too_big(item):
            data[i] = shrink_item(item) # or delete it...
            print(f"item shrinked: {i}")


def write_bson_file(data, filename):
    new_filename = filename
    with open(new_filename, "wb") as f:
        for event in data:
            bson_data = bson.BSON.encode(event)
            f.write(bson_data)

def is_too_big(item):
    # you need to implement this one...
    pass


def shrink_item(item):
    # you need to implement this one...
    pass


def main():
    bson_file_name = "/path/to/file.bson"
    data = get_bson_data(bson_file_name)
    report_problematics_documents(data)

    shrink_data(data)
    report_problematics_documents(data)

    new_filename = bson_file_name + ".new"
    write_bson_file(data, new_filename)
    
    print("Load new data")
    data = get_bson_data(new_filename)
    report_problematics_documents(data)

if __name__ == '__main__':
    main()



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मार्गों, नियंत्रकों और मॉडलों का उपयोग करके NodeJS परियोजना के मिडलवेयर कोड को पुन:सक्रिय करना

  2. mongoDB, कॉन्फ़िगरेशन फ़ाइल से नहीं पढ़ सका - अलग फ़ोल्डर में कॉन्फ़िगर करें/इसे अनइंस्टॉल करें?

  3. मोंगोडीबी में, मैं एक बड़ी क्वेरी का उपयोग कर रहा हूं, मैं कंपाउंड इंडेक्स या सिंगल इंडेक्स कैसे बनाऊंगा, इसलिए मेरा प्रतिक्रिया समय बढ़ जाता है

  4. नोड.जेएस एक्सप्रेस पासपोर्ट रूटिंग

  5. एनजी-रिपीट में डेटाबेस से खींची गई वस्तुओं का रिवर्स ऑर्डर