- MongoEngine 教程
- MongoEngine - 主頁
- MongoEngine - MongoDB
- MongoEngine - MongoDB Compass
- MongoEngine - 物件文件對映
- MongoEngine - 安裝
- MongoEngine - 連線到 MongoDB 資料庫
- MongoEngine - 文件類
- MongoEngine - 動態架構
- MongoEngine - 欄位
- MongoEngine - 添/刪文件
- MongoEngine - 資料庫查詢
- MongoEngine - 過濾器
- MongoEngine - 查詢運算子
- MongoEngine - 查詢集方法
- MongoEngine - 排序
- MongoEngine - 自定義查詢集
- MongoEngine - 索引
- MongoEngine - 聚合
- MongoEngine - 高階查詢
- MongoEngine - 文件繼承
- MongoEngine - 原子更新
- MongoEngine - Javascript
- MongoEngine - GridFS
- MongoEngine - 訊號
- MongoEngine - 文字搜尋
- MongoEngine - 擴充套件
- MongoEngine 實用資源
- MongoEngine - 快速指南
- MongoEngine - 實用資源
- MongoEngine - 討論
MongoEngine - 高階查詢
為了更有效地檢索文件中的欄位子集,請使用 Objects 屬性的 only() 方法。這將顯著提高效能,尤其是對於內容特別長的欄位(如 ListField)。將所需的欄位傳遞到 only() 函式。如果在執行 only() 查詢後訪問其他欄位,則返回預設值。
from mongoengine import *
con=connect('newdb')
class person (Document):
name=StringField(required=True)
city=StringField(default='Mumbai')
pin=IntField()
p1=person(name='Himanshu', city='Delhi', pin=110012).save()
doc=person.objects.only('name').first()
print ('name:',doc.name)
print ('city:', doc.city)
print ('PIN:', doc.pin)
輸出
name: Himanshu city: Mumbai PIN: None
注意 - 使用城市屬性的值作為預設值。由於未為 PIN 指定預設值,因此輸出 None。
如果需要缺少的欄位,可以呼叫 reload() 函式。
當文件類具有 ListField 或 DictField 時,在對其進行迭代時,所有 DBREf 物件都會自動解除引用。為了進一步提高效率,特別是如果文件有 ReferenceField 的話,可以使用 select_related() 函式限制查詢數量,該函式將 QuerySet 轉換為列表並執行解除引用。
MongoEngine API 包含 Q 類,其對於構建由多個約束組成的高階查詢非常有用。Q 表示可以由關鍵字引數語法和二元 & 和 | 運算子初始化的查詢部分。
person.objects(Q(name__startswith=’H’) &Q(city=’Mumbai’))
廣告