为什么MongoEngine文档接受未定义的字段而不引发异常?

时间:2013-09-02 14:44:03

标签: python mongoengine

如果我有一个MongoEngine文档,如果我创建一个提供未定义字段的实例,它不会引发异常。为什么是这样?我想知道何时提供一个未定义的字段。

MyDoc(undefined_field='test').save()

2 个答案:

答案 0 :(得分:0)

使用MongoDB的优点是在模式上是灵活的,因此它们被认为是无模式的。通过允许添加未定义的字段,框架允许功能有用。

我不确定MongoEngine,但是如果你使用的是mongokit,我们可以指定不严格我们的模式,否则默认会引发ValidationError。 为了使其无模式,我们在Document类中添加use_schemaless = True,以使其无模式。

我更喜欢将MongoKit用于MongoEngine,不仅仅是因为这个原因,而是MongoEngine在保存数据时为数据添加了额外的字段和属性。 在DB中。如果您希望您的数据干净,请选择MongoKit(只是以前的经验建议)。您可以在这里参考:mongokit

谢谢!

答案 1 :(得分:0)

我觉得MongoEngine缺少功能,所以我创建了一个拉取请求:

https://github.com/MongoEngine/mongoengine/pull/457