I have seen this and other similar titled questions, none answer my question.
I was going through the mongoose documentation where I read
MongoDB has the join-like $lookup aggregation operator in versions >= 3.2. Mongoose has a more powerful alternative called populate(), which lets you reference documents in other collections.
How does populate()
in mongoose work that makes it more powerful than MongoDB's $lookup
?
Isn't mongoose a tool that helps nodejs users work with mongodb. If so how can mongoose have functionalities that MongoDB does not? Like populate()
?
Does mongoose's populate()
method use MongoDB's $lookup
behind the scenes?
populate() function in mongoose is used for populating the data inside the reference. In your example StorySchema is having _creator field which will reference to the _id field which is basically the ObjectId of the mongodb document. populate() function can accept a string or an object as an input.
Mongoose Populate() Method. In MongoDB, Population is the process of replacing the specified path in the document of one collection with the actual document from the other collection.
Short answer: You can't.
Thanks to a github thread shared by Grégory NEUT in the question's comments I have been able to establish certain facts:
populate()
just makes two or more queries.How does populate() in mongoose work that makes it more powerful than MongoDB's $lookup?
In my opinion, there are places to use populate()
and others to use $lookup
. For more complex queries $lookup
in an aggregation pipeline would work best.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With