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 はこれを 2 つの方法で実行できます。
- クエリ 1 をメモリに実行して永続ストレージからデータをフェッチし、後でこのデータにクエリ 2 とクエリ 3 を適用して結果を得ることができます。
- 内部で複雑な複合クエリを作成し、クエリ 1、クエリ 2 の実行を遅らせることができます。Xobj2を使用すると、この複合クエリ (クエリ 1、2、および 3 で作成) が実行され、永続ストレージからデータが取得されます。
mongoengine のコードを見て、2 番目の方法を使用していることがわかりました。ここで私の質問は、mongoengine にクエリ 1 を強制的に実行させ、クエリ 1 の実行後にメイン メモリで利用可能なデータに後続のクエリを適用できるかどうかです。