#python #mongodb #mongoengine
#python #mongodb #mongoengine
Вопрос:
Есть ли у mongoengine аналогичный метод для заполнения
db.collection.posts.findById(id).populate('user_id')
Ответ №1:
день проходит, но я все еще не видел ничего, что связано .populate()
с документацией API mongoengine
, и я решил сделать по-своему.
mongoengine
это объектно-ориентированный драйвер, сравните с mongoose
уже предопределенной функцией .populate()
, но если вы знаете, как работает ООП, для вас это просто кусок пирога, вот простой трюк
# .schema.author.py
class Author(Document):
name = StringField(required=True)
# .schema.book.py
class Book(Document):
title = StringField()
author = ReferenceField(Author)
def tojson(self):
json = {
'title ': self.title ,
'author ': self.author,
}
json['author'] = self.author.name
return json
# .route.book.py
def get(self):
try:
books = []
for book in Book.objects:
books.push(book.tojson())
return {'status': True, 'response': books}
except Exception as e:
print(e)
и ожидаемый результат должен быть заполнен Author
для каждого Book
объекта
{
"status": true,
"response": [
{
"title": "<book-name>",
"author": {
"name": "<author-name>"
}
}
]
}
Ответ №2:
Я не эксперт в MongoEngine, но вы можете запросить следующим образом:
post = Posts.objects(id=id).first()
Это возвращает данные из этой модели, и они уже заполнены. Вы можете получить доступ к автору сообщения, используя:
post.author.name
Комментарии:
1. Пожалуйста, используйте раздел комментариев для предложений!