2

MongoEngine ドキュメントがあり、未定義のフィールドを提供するインスタンスを作成しても、例外は発生しません。どうしてこれなの?未定義のフィールドを提供する時期を知りたいです。

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

2 に答える 2

0

MongoDB を使用する利点は、スキーマが柔軟であることです。したがって、MongoDB はスキーマレスであると言われています。フレームワークは、定義されていないフィールドを追加できるようにすることで、機能を便利にすることができます。

MongoEngine についてはわかりませんが、mongokit を使用している場合は、スキーマに厳密にならないように指定できます。そうしないと、デフォルトで ValidationError が発生します。スキーマレスにするために Document クラスに use_schemaless = True を追加し、スキーマレスにします。

この理由だけでなく、MongoEngine が DB に保存されるときにデータに追加のフィールドと属性を追加するという事実のために、MongoEngine よりも MongoKit を使用することをお勧めします。データをクリーンにしたい場合は、MongoKit を使用してください (これまでの経験からのアドバイスです)。ここで参照できます: mongokit

ありがとう!

于 2013-09-02T14:56:22.097 に答える
0

これには MongoEngine の機能が欠けていると感じているので、プル リクエストを作成しました。

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

于 2013-09-02T16:22:12.007 に答える