2016-06-01 16 views
2

使用例:MongoDB(およびFlask)を使用してバックエンドを作成しています。現時点では、これはMongoose/MongothonのようなORMを使用していません。私はドキュメントに各ドキュメントを作成したユーザーの_idを保存したいと思います。私は作成後にそのフィールドを変更することは不可能であることを望みます。バックエンドは現在、任意の更新は(基本的に)使用できますcollection.update_one({"_id": oid}, {"$set": request.json})MongoDBの作成後にフィールドを不変にする方法は?

私はrequest.jsonから_creator_idフィールドをフィルタリングでき

del request.json["_creator_id"]のようなもの)が、私はここで構文は可能性がすべての可能な方法をカバーしていないという心配フィールドが更新されるように修正されました(hmm、ドット表記?)。理想的には、私はフィールドをMongoDB自体に一度だけ書き込む方法を欲しがっていますが、失敗して、コード内のフィールドの更新を防ぐためのいくつかの防弾方法です。

答えて

1

imho mongo内の更新を防ぐ方法はありません。 アプリの動作を制御できるため、誰かがアプリの外でこのアップデートを行うことができます。 Mongoにはトリガがありません。これはSQL世界ではデータガードとしてプレイしてフィールドの変更を防ぐ可能性があります。

ODMを使用しない場合は、CQRSパターンを使用するだけでアプリの動作を制御し、そのような更新を防ぐことができます。

関連する問題