在MongoDb中找到两个集合之间的交集
Finding intersection between two collections in MongoDb
我有两个非常大的集合(超过30000个文档),一个包含从文本文件中提取的单词(集合名称'word'),另一个包含从字典中提取的单词(集合名称'dictionary')。
如何获得两个集合中都存在的单词?
(我已经简化了这种情况,'word'集合中的文档包含关于单词的元数据,因此每个单词必须是一个单独的文档。)
将这两个集合复制到一个集合中(必要时包括一个discriminator字段,以便您可以区分每个实例中的文档类型)
在该集合上运行map-reduce
在Map中,根据被映射的文档是实例还是字典条目,发出单词作为键和值,例如{instance:1, dict:0}
或{instance:0, dict:1}
。(您可以根据需要在这里的值中添加更多字段。)
在Reduce中,像往常一样累积分数。
现在执行查询查找instance > 0
和dict > 0
,并且您拥有两者中所有的单词。
let
db.word.findOne() >{ word:'a_word', ... }
db.dict.findOne() >{ word:'a_word', def:'def_of_a_word', ... }
查找单词
db.word.distinct('word')
检查字典中是否存在a_word
db.dict.count({word:'a_word'}) // 0=not exist
相关文章:
- 两个集合mongodb之间的关系
- 如何将两个集合转换为一个集合
- Meteor:如何使用空格键创建包含两个集合数据的树列表
- 如何计算mongodb中两个集合中一个字段的不同值的数量
- 如何使用javascript将两个dom元素集合合并到第三个集合中
- 如何将中的两个geoJSON功能集合添加到两个层组中
- 骨干.js两个层次的集合
- 如何在Meteor中使用两个按时间排序的不同模板显示两个不同的集合
- Metero 通过 id 从两个集合映射中获取数据
- 高效连接两个集合
- 尝试关联两个获得输入值的集合
- 主干集合 - 在集合级别合并两个集合
- 流星:如何在MongoDB中单击一下即可从两个集合中删除两个文档
- 如何在单个反应表中使用两个集合
- 流星:通过 DDP 连接两个应用程序时,模板帮助程序中没有来自远程集合的文档
- 在两个集合之间传递数据 - Meteor JS
- 合并两个集合在 mongodb 中没有地图减少....
- 在主干.js中的两个视图上访问集合
- 从mongodb中的两个集合中的find生成一个json
- 在同一集合中添加两个项目