MongoDB $lookup: Limitations & Usage -
with new aggregation pipeline stage $lookup
able perform 'left outer joins'.
at first glance, want replace 1 of our denormalised collections 2 separate collections , use $lookup
join them upon querying. solve problem of having, when necessary, update huge number of documents. can update 1 document.
but surely true? nosql, document database after all!
mongodb's cto highlights concerns:
we’re still concerned $lookup can misused treat mongodb relational database. instead of limiting availability, we’re going developers know when use appropriate, , when it’s anti-pattern. in coming months, go beyond existing documentation provide clear, strong guidance in area.
what limitations of $lookup
? can use them in real-time, operational querying of our data or should left reporting, offline situations?
i share same enthusiasm $lookup
.
i think there trade-offs. 1 of major concerns of sql databases (and 1 of reasons genesis of nosql) @ large scale, joins can take lot of time (well, relatively speaking).
it helps in giving declarative model data, if start model entire nosql database though database of rows , tables (just using ref
s, example), begin modeling though it's sql database (to degree). mongodb mentioned (like put in question):
we’re still concerned $lookup can misused treat mongodb relational database.
you mentioned:
this solve problem of having, when necessary, update huge number of documents. can update 1 document.
i'm not sure collections exactly, sounds use $lookup
.
can use them in real-time, operational querying
i say, again, depends on use-case. you'll have compare:
- desired semantics of queries (declarative vs imperative)
- whether modeling data more relational (and using
$lookup
) in circumstances worth potential trade-off in computational time (that's assuming querying across collections concerned about, computationally speaking)
etc...
i'm sure in coming months we'll see perf tests of "left outer joins" , perhaps mongodb start writing posts when $lookup
antipattern.
hope answer helps add discussion.
Comments
Post a Comment