如何有效地加入 MongoDb 中的 2 个巨大集合?

YMC*_*YMC 4 mongodb

我有两个巨大的(几十万条记录)集合Col1Col2,我需要从它们中获取连接的数据。有一个连接标准可以让我将返回的记录数量大幅减少到几百,所以在 SQL 语言中我会运行类似的东西

 SELECT ... FROM Col1 INNER JOIN Col2 ON Col1.field1 = Col2.field2
Run Code Online (Sandbox Code Playgroud)

而且它的运行速度非常快,因为Col1.field1Col2.field2是索引字段。有没有直接的方法或解决方法可以在 MongoDb 中使用索引快速执行相同的操作,而不是扫描所有项目?

注意:我无法重新设计集合以将它们合并为一个。

jdi*_*jdi 5

MongoDB 没有 JOIN,因此没有快速的等效项。这很可能是一个架构设计问题,但你说你无法改变它。您无法在一个查询中查询多个集合。

您可以在 2 个查询中进行客户端连接,也可以通过执行映射缩减并生成第三个集合以非实时方式进行连接。

有关如何进行映射缩减的详细信息,请参考另一个问题