MongoEngine - 動態模式



MongoDB 資料庫的優勢之一是它支援動態模式。要建立支援動態模式的類,請將其子類化自 DynamicDocument 基類。以下是具有動態模式的 Student 類:

>>> class student(DynamicDocument):
... name=StringField()

第一步是像以前一樣新增第一個文件。

>>> s1=student()
>>> s1.name="Tara"
>>> connect('mydb')
>>> s1.save()

現在,向第二個文件新增另一個屬性並儲存。

>>> s2=student()
>>> setattr(s2,'age',20)
>>> s2.name='Lara'
>>> s2.save()

在資料庫中,student 集合將顯示兩個具有動態模式的文件。

Dynamic Schema

文件類的 meta 字典可以透過指定 max_documents 和 max_size 來使用帶上限的集合。

max_documents - 允許儲存在集合中的最大文件數。

max_size - 集合的最大大小(以位元組為單位)。在 MongoDB 內部和 mongoengine 之前,max_size 會四捨五入到下一個 256 的倍數。

如果未指定 max_size 而指定了 max_documents,則 max_size 預設為 10485760 位元組(10MB)。

文件類的其他引數如下所示:

objects 在訪問時延遲建立的 QuerySet 物件。
cascade_save() 遞迴儲存文件上的任何引用和泛型引用。
clean() 在執行驗證之前執行文件級別資料清理的鉤子。
create_index() 根據需要建立給定的索引。
drop_collection() 從資料庫中刪除與這種文件型別關聯的整個集合。
from_json() 將 json 資料轉換為文件例項。
modify() 對資料庫中的文件執行原子更新,並使用更新後的版本重新載入文件物件。
pk 獲取主鍵。
save() 將文件儲存到資料庫。如果文件已存在,則將更新它,否則將建立它。返回已儲存的物件例項。
delete() 從資料庫中刪除當前文件。
insert() 執行批次插入操作。
廣告

© . All rights reserved.