2016-06-01 8 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, dot notation?) 수정되었습니다. 이상적으로는 MongoDB 자체에서 필드를 한 번 쓸 수있게하는 방법을 원하지만, 코드에서 필드의 업데이트를 막는 방탄 방법이 필요하지 않습니다.

답변

1

imho 몽고 내부의 업데이트를 막는 방법이 없습니다. 앱 동작을 제어 할 수 있기 때문에 누군가가 앱 외부에서이 업데이트를 계속 수행 할 수 있습니다. Mongo는 SQL 세계에서 데이터 보호자로서의 역할을하고 필드 변경을 방지 할 수있는 트리거를 가지고 있지 않습니다.

ODM을 사용하지 않으므로 CQRS 패턴 만 있으면 앱 동작을 제어하고 이러한 업데이트를 방지 할 수 있습니다.

관련 문제