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

标签 mongodb

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

 SELECT ... FROM Col1 INNER JOIN Col2 ON Col1.field1 = Col2.field2

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

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

最佳答案

MongoDB 没有 JOIN,所以没有快速的等价物。这很可能是架构设计问题,但您说您无法更改它。您不能在一个查询中查询多个集合。

您可以在 2 个查询中执行连接客户端,也可以通过执行 map-reduce 并生成第三个集合以非实时样式执行此操作。

有关如何执行 map-reduce 的详细信息,请引用 this other question

关于mongodb - 如何有效地加入 MongoDb 中的 2 个巨大集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12557337/

相关文章:

MongoDB $geoNear 聚合管道(使用查询选项并使用 $match 管道操作)给出不同的结果

MongoDB $geoIntersects 不返回特定城市的任何数据

javascript - 使用 moment.js 转换 MongoDate

javascript - Angular/Node/Mongoose - 渲染帖子、评论、回复

java - Spring Boot 和 Spring Data MongoDB : hiding fields in a ResponseBody

ruby-on-rails - Mongoid:按字段排序并跳过N条记录

mongodb - 如何为 mongoDB 配置 SSL 密码套件

不同字段范围查询的mongodb索引策略

html - 如何在 HTML 中显示 ImageGridFSProxy?

java - 如何将 Mongo 查询转换为 java 对象