Хранение больших данных в коллекции mongodb с помощью python
Я работаю над проектом Django, в котором мне нужно создать данные за 10 лет и хранить их в MongoDB, получить их и отобразить на HTML-странице. Я пытаюсь разделить 10 лет данных на 1 год и затем сохранить их в коллекции MongoDB, но всякий раз, когда я пытаюсь это сделать, сохраняются только два документа и
эта ошибка отображается в pymongo. errors.DocumentTooLarge: BSON документ слишком большой (29948865 байт) - подключенный сервер поддерживает BSON документ размером до 16793598 байт.
мой код на питоне
now=start
workdate=now.date()
nowtime=now.time()
endt=end
ktime=start
times=[]
states=[]
level=[]
#generating random level of water in the tank
while (now!=endt): # loop for creating data for given time
ktime=ktime+relativedelta(months=5)
print(current_level)
def fill():
global df
global now
global workdate
global nowtime
global ktime
global current_level
global flag
global times
global states
global level
while x=='on' and current_level<=450:
times.append(now)
states.append(x)
level.append(current_level)
current_level+=filling
current_level=round(current_level,2)
now=now+timedelta(minutes=1)
nowtime=now.time()
workdate=now.date
if now==ktime:
times.append(now)
states.append(x)
level.append(current_level)
print("true")
flag='red'
break
def drain():
global df
global now
global workdate
global nowtime
global ktime
global current_level
global flag
global times
global states
global level
while x=='off' and current_level>50:
times.append(now)
states.append(x)
level.append(current_level)
print(current_level)
current_level-=emptyrate
current_level=round(current_level,4)
now=now+timedelta(minutes=1)
nowtime=now.time()
workdate=now.date()
if now==ktime:
times.append(now)
states.append(x)
level.append(current_level)
print("true")
flag='red'
break
flag='green'
k=True
while k:
if x=='off' and current_level>50:
drain()
x='on'
if flag =='red':
break
if x=='on' and current_level<450:
fill()
x='off'
if flag=='red':
break
data = {'time': times, 'status': states, 'level': level}
df = pd.DataFrame(data)
df.reset_index(inplace=True)
data = df.to_dict('records')
colle.insert({"data":data}) #transfering data to collection
del df
data.clear()
Итак, проблема была в моей логике, вместо очистки данных я должен был очистить уже сохраненные данные в списке времени, статуса и уровня после завершения цикла. поэтому последняя часть, которую нужно изменить, выглядит следующим образом
while k:
if x=='off' and current_level>50:
drain()
x='on'
if flag=='red':
data = {'time': times, 'status': states, 'level': level}
flag='green'
break
if x=='on' and current_level<450:
fill()
x='off'
if flag=='red':
data = {'time': times, 'status': states, 'level': level}
flag='green'
break
df = pd.DataFrame(data)
print(df)
df.reset_index(inplace=True)
data_dict = df.to_dict("records")
colle.insert_one({"DATA":data_dict})
df=df.iloc[0:0]
times.clear()
states.clear()
внешний цикл или главный цикл, управляющие периодом, в течение которого выполняется следующий код, остаются неизменными