2

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

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

2 回答 2

0

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

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

于 2013-09-02T16:22:12.007 回答
0

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

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

我更喜欢使用 MongoKit 而不是 MongoEngine,不仅仅是因为这个原因,而且事实上,当 MongoEngine 将额外的字段和属性保存在数据库中时,它会在您的数据中添加额外的字段和属性。如果您希望数据干净,请使用 MongoKit(只是以前经验的建议)。你可以参考这里:mongokit

谢谢!

于 2013-09-02T14:56:22.097 回答