Запрос ссылочных полей с MongoEngine - PullRequest
9 голосов
/ 04 июля 2011

Я играю с MongoEngine и просто не могу найти способ запроса ReferenceFields

Class Foo(Document)
    bar = ReferenceField(Bar)
    ...

Class Bar(Document)
    value =IntField()
    ...

bars = Bar.objects.filter(value__lt=1000)

Джанго:

foos = Foo.objects.filter(bar__in=bars)

MongoEngine:?

Есть ли способ достичь этого?

Заранее спасибо,

Ответы [ 2 ]

9 голосов
/ 07 июля 2011

Это невозможно одним запросом.

попробуйте это:

bars = Bar.objects.filter(value__lt = 1000)
foo = Foo.objects.filter(bar__in = bars)

Больше см. Это тестовые сценарии.
https://github.com/Ankhbayar/mongoengine/blob/dev/tests/django_tests.py#L73

0 голосов
/ 04 июля 2011

Если вы используете ссылку, вы не можете выполнять запросы к указанным полям объекта. Поскольку ссылки выполняются внутренне в драйвере, и большинство драйверов сохраняют ссылочный идентификатор документа, имя коллекции и имя базы данных (поэтому вы можете запрашивать только по ссылочному идентификатору документа).

Хотите запрос? Используйте вложение или сделайте два отдельных запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...