【问题标题】:Saving None into MongoDB using MongoEngine Dynamic Document使用 MongoEngine 动态文档将 None 保存到 MongoDB
【发布时间】:2016-10-09 07:08:49
【问题描述】:

我正在尝试将 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()

当要保存的一个或多个值是“无”时,就会出现我遇到的问题。在这种情况下会产生以下错误:

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

我可以将 None 值设置为 0,但这不是一个好的解决方案,因为我无法再区分合法的 0 值和不存在的值。

我想做的是能够将这些 None 值作为“null”条目插入 MongoDB。

这可能吗?

【问题讨论】:

    标签: python mongodb pymongo mongoengine


    【解决方案1】:

    运行您的代码没有问题。插入的文档如下所示:

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

    在我运行代码之前,我必须将self 作为sample_insert 函数的参数。

    【讨论】:

      猜你喜欢
      • 2013-02-15
      • 1970-01-01
      • 2013-12-30
      • 2012-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-28
      相关资源
      最近更新 更多