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指定默认值,它打印为无。

如果你需要丢失的字段,你可以调用reload()函数。

当一个文档类有一个ListField或DictField时,当它被迭代时,任何DBREf对象都会被自动解除引用。为了进一步提高效率,特别是当文档有ReferenceField时,可以通过使用select_related()函数来限制查询的数量,该函数将QuerySet转换为一个列表并实现解引用。

MongoEngine API包含Q类,该类对于构建由许多约束条件组成的高级查询非常有用。Q代表查询的一部分,可以通过关键字参数语法和二进制&和|操作符来初始化。

person.objects(Q(name__startswith=’H’) &Q(city=’Mumbai’))

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程