feat: add support for the $lookup step in $aggregate #33
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What
$lookupwas not working in$aggregate. It's like a JOIN in SQL. Very useful in complex aggregation queries.How
Mingo has to be able to search in a collection we are doing the
$lookupon. By default it doesn't know how to access that collection's documents.To make it know we need to provide the
collectionResolveroption into theMingo.Aggregator()with the logic to source the documents for the lookup over a particular collection.Also the subscriptions to
$aggregatequeries were not working correctly since it's a special case which requires doing a full query on each doc change. So added it tocanPollDocto be ignored.Tests
Added an extra test for
$lookupConcerns
I'm not sure whether it's required to do
db._getSnapshotSync()for each document before casting it into the Mongo doc format, butShareDBMingo.prototype.query()does it so I did it too.The tests pass even if I just directly take
db.docs[collection]and just docastToMongoDocon them. So dunno, I'm probably missing some context here to understand why it passes with or without doingdb._getSnapshotSync().