Как получить данные из коллекции использую mongoengine?
Есть две коллекции: author и quote структура коллекций:
from mongoengine import Document
from mongoengine.fields import StringField, ListField, ReferenceField
class Author(Document):
fullname = StringField()
born_date = StringField()
born_location = StringField()
description = StringField()
class Quote(Document):
tags = ListField()
author = ReferenceField(Author)
quote = StringField()
Мне нужно найти цитату(quote) по определенному автору, но у меня ничего не находит, будто такого автора нет. Функция для поиска цитат:
def search_quote_from_name(user_args):
name = user_args.split('name:')[1]
# get obj Author from name to be sure everything is correct
author = Author.objects(fullname=name).first()
quotes = Quote.objects(author=author.id)
for quote in quotes:
print(quote)
Я могу взять объект нужный author и обратиться к его методам получив правильные данные, то есть проблема в строке:
quotes = Quote.objects(author=author.id)
Пробовал еще через author__fullname=author.fullname, но тогда ошибка получается:
mongoengine.errors.InvalidQueryError: Cannot perform join in mongoDB: author__fullname
UPD: Я могу обратиться к найденным в цикле quote.quote и quote.tags и все будет верно, но при quote.authors будет ошибка:
raise DoesNotExist(f"Trying to dereference unknown document {dbref}")
mongoengine.errors.DoesNotExist: Trying to dereference unknown document DBRef('author', 'Albert Einstein')
Не могу найти ошибку свою в построении связи quote-author.
Источник: Stack Overflow на русском