Сохранение None в MongoDB с использованием динамического документа MongoEngine

Я пытаюсь сохранить документ MongoEngine в динамический документ. Пример кода выглядит следующим образом:

class Small(mongoengine.Document):
    var_1 = mongoengine.IntField(db_field="var_1")
    var_2 = mongoengine.IntField(db_field="var_2")

class Main(mongoengine.DynamicDocument):
    timeseries = mongoengine.ListField(mongoengine.EmbeddedDocumentField('Small'),
                                       db_field="timeseries")

    def sample_insert():
        input = [(2, 4), (2, 6), (3, None), (4, None)]

        to_insert = [Small(var_1=i[0], var_2=i[1]) for i in input]

        self.timeseries = to_insert
        self.save()

Проблема, с которой я сталкиваюсь, возникает, когда одно или несколько сохраняемых значений равны None. В этом случае возникает следующая ошибка:

mongoengine.errors.ValidationError: ValidationError (Data:55c0d57d1853bcad5c17b1f7) (var_1.Field is required)

Я мог бы установить значения None равными 0, но это не очень хорошее решение, поскольку я больше не могу различать законные значения 0 и несуществующие значения.

Что бы я хотел сделать, так это иметь возможность вставлять эти значения None как «нулевую» запись в MongoDB.

Это возможно?


person Sam F    schedule 08.06.2016    source источник


Ответы (1)


У меня не было проблем с запуском вашего кода. Вставленный документ выглядит так:

"timeseries" : [{ "var_1" : 2, "var_2" : 4 }, { "var_1" : 2, "var_2" : 6 }, { "var_1" : 3 }, { "var_1" : 4 }]

Прежде чем я смог запустить код, мне пришлось указать self в качестве аргумента вашей функции sample_insert.

person Jiří Mauritz    schedule 05.04.2018