MongoDB $lookup vs Mongoose populate
Asked Answered
A

1

19

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?

Ascariasis answered 24/6, 2020 at 14:53 Comment(4)
github.com/Automattic/mongoose/issues/…Tittletattle
Thanks for the link. I have read the whole thread. Now I know that mongoose's populate() method does not use MongoDB's $lookup behind the scenes. And I have understood that the populate method does several trips to the DB to populate. I have also seen that in getting an array of docs populate() is faster. But why do people want populate() to use $lookup?Ascariasis
Make populate to use $lookup under the hood would allow people to use .populate() syntax over $aggregation. If you needs $lookup performance, then you must use $aggregation at this moment. Also it would be better if mongoose use what's available in mongodb instead of doing it's own "framework" function.Tittletattle
@GrégoryNEUT I have asked another similar question on the same topic. Kindly have a look. Thanks.Ascariasis
A
18

Thanks to a github thread shared by Grégory NEUT in the question's comments I have been able to establish certain facts:

  1. Mongoose's populate() method does not use MongoDB's $lookup behind the scenes. It simply makes another query to the database.
  2. Mongoose does not have functionalities that MongoDB does not have. 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.

Ascariasis answered 24/6, 2020 at 15:32 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.