Возможно, связан с этим вопросом , но на него нет ответов.
У меня есть коллекция моделей, связанных между ними, и сложность модели root значительно возросла. Грубо говоря, моя ситуация выглядит примерно так:
from mongoengine import *
connect("test")
class NotSoComplex(EmbeddedDocument):
name = StringField()
value = StringField()
class Complex1(EmbeddedDocument):
r1 = DictField()
r2 = EmbeddedDocumentListField(NotSoComplex)
class Complex2(EmbeddedDocument):
...
class VeryComplex(Document):
r1 = EmbeddedDocumentField(Complex1)
r2 = EmbeddedDocumentListField(Complex2)
meta = {"allow_inheritance": False, "collection": "test"} # , "indexes":["??"]}
Я бы хотел отфильтровать документы VeryComplex на основе value
, которые хранятся в EmbeddedDocumentListField. Я имею в виду, я хочу отфильтровать документы, у которых есть какой-то документ в r1.r2 со значением == "Foo". Я не знаю, как это сделать express в запросах фильтра mongoengine, я хотел бы что-то вроде
print (VeryComplex.objects (r1__r2__contains__name = "Foo"))
В идеале я хотел бы также создайте и внесите в указатель это поле, если это возможно.