- MongoEngine - Discussion
- MongoEngine - Useful Resources
- MongoEngine - Quick Guide
- MongoEngine - Extensions
- MongoEngine - Text Search
- MongoEngine - Signals
- MongoEngine - GridFS
- MongoEngine - Javascript
- MongoEngine - Atomic Updates
- MongoEngine - Document Inheritance
- MongoEngine - Advanced Queries
- MongoEngine - Aggregation
- MongoEngine - Indexes
- MongoEngine - Custom Query Sets
- MongoEngine - Sorting
- MongoEngine - QuerySet Methods
- MongoEngine - Query Operators
- MongoEngine - Filters
- MongoEngine - Querying Database
- MongoEngine - Add/Delete Document
- MongoEngine - Fields
- MongoEngine - Dynamic Schema
- MongoEngine - Document Class
- MongoEngine - Connecting to MongoDB Database
- MongoEngine - Installation
- MongoEngine - Object Document Mapper
- MongoEngine - MongoDB Compass
- MongoEngine - MongoDB
- MongoEngine - Home
Selected Reading
- Who is Who
- Computer Glossary
- HR Interview Questions
- Effective Resume Writing
- Questions and Answers
- UPSC IAS Exams Notes
MongoEngine - Dynamic Schema
One of the advantages of MongoDB database is that it supports dynamic schema. To create a class that supports dynamic schema, subclass it from DynamicDocument base class. Following is the Student class with dynamic schema −
>>> class student(DynamicDocument): ... name=StringField()
The first step is to add first Document as before.
>>> s1=student() >>> s1.name="Tara" >>> connect( mydb ) >>> s1.save()
Now add another attribute to second document and save.
>>> s2=student() >>> setattr(s2, age ,20) >>> s2.name= Lara >>> s2.save()
In the database, student collection will show two documents with dynamic schema.
The meta dictionary of document class can use a Capped Collection by specifying max_documents and max_size.
max_documents − The maximum number of documents that is allowed to be stored in the collection.
max_size − The maximum size of the collection in bytes. max_size is rounded up to the next multiple of 256 by MongoDB internally and mongoengine before.
If max_size is not specified and max_documents is, max_size defaults to 10485760 bytes (10MB).
Other parameters of Document class are psted below −
objects | A QuerySet object that is created lazily on access. |
cascade_save() | Recursively save any references and generic references on the document. |
clean() | Hook for doing document level data cleaning before vapdation is run. |
create_index() | Creates the given indexes if required. |
drop_collection() | Drops the entire collection associated with this Document type from the database. |
from_json() | Converts json data to a Document instance. |
modify() | Perform an atomic update of the document in the database and reload the document object using updated version. |
pk | Get the primary key. |
save() | Save the Document to the database. If the document already exists, it will be updated, otherwise it will be created. Returns the saved object instance. |
delete() | Delete current document from database. |
insert() | Performs bulk insert operation. |