我正在尝试将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值作为'null'条目插入MongoDB。
这可能吗?
答案 0 :(得分:0)
运行代码没问题。插入的文档如下所示:
"timeseries" : [{ "var_1" : 2, "var_2" : 4 }, { "var_1" : 2, "var_2" : 6 }, { "var_1" : 3 }, { "var_1" : 4 }]
在我运行代码之前,我必须将self
作为sample_insert
函数的参数。