我们可以控制mongoengine中复合查询集的执行吗?
例如:
from models import X
Xobjs = X.objects.filter(field1='xyz') # query 1
Xobjs1 = Xobjs.filter(field2='pqr') # query 2
Xobjs2 = Xobjs1.filter(field3='abc') # query 3
现在我想使用Xobj2的结果。
ORM 可以通过两种方式做到这一点:
- 它可以通过将查询 1 执行到内存中来从持久存储中获取数据,然后在此数据上应用查询 2 和查询 3 来给我结果。
- 它可以在后台创建复杂的复合查询并延迟查询 1、查询 2 的执行,当我使用Xobj2时,它会执行此复合查询(由查询 1,2 和 3 生成)并从持久存储中获取数据。
我看到mongoengine的代码,发现它使用的是第二种方法。现在我的问题是我们是否可以强制 mongoengine 执行查询 1,然后在执行查询 1 后对主内存中可用的数据应用后续查询?