如果我有一个MongoEngine文档,如果我创建一个提供未定义字段的实例,它不会引发异常。为什么是这样?我想知道何时提供一个未定义的字段。
MyDoc(undefined_field='test').save()
答案 0 :(得分:0)
使用MongoDB的优点是在模式上是灵活的,因此它们被认为是无模式的。通过允许添加未定义的字段,框架允许功能有用。
我不确定MongoEngine,但是如果你使用的是mongokit,我们可以指定不严格我们的模式,否则默认会引发ValidationError。 为了使其无模式,我们在Document类中添加use_schemaless = True,以使其无模式。
我更喜欢将MongoKit用于MongoEngine,不仅仅是因为这个原因,而是MongoEngine在保存数据时为数据添加了额外的字段和属性。 在DB中。如果您希望您的数据干净,请选择MongoKit(只是以前的经验建议)。您可以在这里参考:mongokit。
谢谢!
答案 1 :(得分:0)
我觉得MongoEngine缺少功能,所以我创建了一个拉取请求: