- MongoEngine 教程
- MongoEngine - 首頁
- MongoEngine - MongoDB
- MongoEngine - MongoDB Compass
- MongoEngine - 物件文件對映器
- MongoEngine - 安裝
- MongoEngine - 連線到 MongoDB 資料庫
- MongoEngine - 文件類
- MongoEngine - 動態模式
- MongoEngine - 欄位
- MongoEngine - 新增/刪除文件
- MongoEngine - 查詢資料庫
- MongoEngine - 過濾器
- MongoEngine - 查詢運算子
- MongoEngine - QuerySet 方法
- MongoEngine - 排序
- MongoEngine - 自定義 QuerySet
- MongoEngine - 索引
- MongoEngine - 聚合
- MongoEngine - 高階查詢
- MongoEngine - 文件繼承
- MongoEngine - 原子更新
- MongoEngine - Javascript
- MongoEngine - GridFS
- MongoEngine - 訊號
- MongoEngine - 文字搜尋
- MongoEngine - 擴充套件
- MongoEngine 有用資源
- MongoEngine - 快速指南
- MongoEngine - 有用資源
- MongoEngine - 討論
MongoEngine - 新增/刪除文件
我們已經使用了 Document 類的 save() 方法來將文件新增到集合中。save() 方法可以透過以下引數進一步自定義:
| force_insert | 預設為 False,如果設定為 True,則不允許更新現有文件。 |
| validate | 驗證文件;設定為 False 以跳過。 |
| clean | 呼叫文件的 clean 方法,validate 引數應為 True。 |
| write_concern | 將用作生成的 getLastError 命令的選項。例如,save(..., write_concern={w: 2, fsync: True}, ...) 將等待至少兩臺伺服器記錄寫入,並將在主伺服器上強制執行 fsync。 |
| cascade | 設定級聯儲存的標誌。您可以透過在文件的 __meta__ 中設定“cascade”來設定預設值。 |
| cascade_kwargs | 傳遞給級聯儲存的可選關鍵字引數。等效於 cascade=True。 |
| _refs | 級聯儲存中使用的已處理引用的列表 |
| save_condition | 僅當資料庫中的匹配記錄滿足條件時才執行儲存。如果條件不滿足,則引發 OperationError |
| signal_kwargs | 傳遞給訊號呼叫的 kwargs 字典。 |
您可以在呼叫 save() 之前為文件驗證設定清理規則。透過提供自定義的 clean() 方法,您可以執行任何預驗證/資料清理。
class MyDocument(Document):
...
...
def clean(self):
if <condition>==True:
msg = 'error message.'
raise ValidationError(msg)
請注意,僅當驗證開啟且在呼叫 save() 時才會呼叫清理。
Document 類還具有 insert() 方法來執行批次插入。它具有以下引數:
| doc_or_docs | 要插入的文件或文件列表 |
| load_bulk | 如果為 True,則返回文件例項列表 |
| write_concern | 額外的關鍵字引數將傳遞給 insert(),並將用作生成的 getLastError 命令的選項。 |
| signal_kwargs | (可選)傳遞給訊號呼叫的 kwargs 字典 |
如果文件包含任何 ReferenceField 物件,則預設情況下,save() 方法不會儲存對這些物件的任何更改。如果您希望所有引用也都被儲存(請注意每次儲存都是一個單獨的查詢),則將 cascade 作為 True 傳遞給 save 方法將級聯任何儲存。
從其集合中刪除文件非常簡單,只需呼叫 delete() 方法即可。請記住,只有在文件先前已儲存的情況下,它才會生效。delete() 方法具有以下引數:
| signal_kwargs | (可選)傳遞給訊號呼叫的 kwargs 字典。 |
| write_concern | 傳遞的其他關鍵字引數將用作生成的 getLastError 命令的選項。 |
要從資料庫中刪除整個集合,請使用 drop_collecction() 方法。它會從資料庫中刪除與此文件型別關聯的整個集合。如果文件沒有設定集合(例如,如果它是抽象的),則該方法會引發 OperationError。
文件類中的 modify() 方法執行資料庫中文件的原子更新並重新載入其更新版本。如果文件已更新,則返回 True,如果資料庫中的文件與查詢不匹配,則返回 False。請注意,如果該方法返回 True,則對文件所做的所有未儲存更改都將被拒絕。
引數
| query | 僅當資料庫中的文件與查詢匹配時,才會執行更新 |
| update | Django 風格的更新關鍵字引數 |
廣告