Wenn ich zwei Objekte wie:wie mongoengine beschleunigen Abfragen
class User(Document):
name = StringField()
following = ListField(ReferenceField('User'))
meta = {
'indexes': [
'following',
]
}
class Media(Document):
owner = ReferenceField('User')
url = StringField()
is_hidden = BooleanField()
posted_date = Date
meta = {
'indexes': [
'owner',
'posted_date',
'is_hidden',
]
}
und wenn ich will, die folgende Bedingung sehen, wo es nicht verborgen ist, und sein Besitzer ist jemand, den ich folgende bin und es war vor kurzem Posted, ich habe eine Abfrage wie folgt:
user = User.objects.first()
Media.objects(Q(owner__in=user.following) &
Q(is_hidden=False) &
Q(posted_date__gte=dt.now()-dt.timedelta(days=3))
die nicht Skalierung und wird viel langsamer. Was kann ich tun, um die Leistung dieser Art von komplexen Abfragen zu beschleunigen?