MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Mongodb може да изхвърля, но не и да съхранява грешка при възстановяване от вмъкването е твърде голямо

Моето решение беше да отворя ръчно BSON файловете (с python), да намеря големите документи и да премахна част от тях, след това да запиша BSON обекта в нов BSON файл и да заредя редактирания BSON файл, който беше успешно съхранен в mongo.

Това не изпълнява желанието ми да мога да заредя изхвърлената база данни в системата, без да я променя!

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. Не може да импортира mongodb

  2. Брой в хранилището на Spring Data MongoDB

  3. Каква е сложността (Big-O) на търсенето на индексирани данни в mongoDB?

  4. Got Access е отказан, когато се опитах да инсталирам 64-bit mongodb в Windows server 2008

  5. Mongoose записва документи, дори ако проверя дали документът вече съществува