¿ Mongoengine tiene un método similar para poblar
db.collection.posts.findById(id).populate('user_id')Pasa el día pero aún no vi nada de que haya una documentación API relacionada con .populate() en mongoengine y elegí hacer mi propio camino.
mongoengine es un controlador orientado a objetos , en comparación con mongoose , ya hay una función predefinida .populate() pero si sabe cómo funciona OOP, es pan comido para usted, aquí hay un truco simple
# .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) y el resultado esperado debe rellenarse Author para cada objeto Book
{ "status": true, "response": [ { "title": "<book-name>", "author": { "name": "<author-name>" } } ] }No soy un experto en MongoEngine, pero puedes consultar así:
post = Posts.objects(id=id).first()
Eso devuelve los datos de ese modelo y ya está poblado. Puede acceder al autor de la publicación usando:
post.author.name