在MongoDb中find两个集合的交集

我有两个非常大的(30000 +文档)集合,一个包含从文本文件(集合名称“单词”)中提取的单词,另一个包含词典(集合名称“词典”)中的单词。

我怎样才能得到两个集合中存在的单词?

(我已经简化了这个情况,“单词”集合中的文档包含关于单词的元数据,所以每个单词都必须是单独的文档。)

将这两个集合复制到一个集合中(如果需要,可以包含一个鉴别器字段,这样您就可以知道每个实例中的文档types)。

在该集合上运行map-reduce

在Map中,根据被映射的文档是实例还是字典条目,发出单词作为键和值,例如{instance:1, dict:0}{instance:0, dict:1} 。 (您可以根据需要将更多的字段添加到值中。)

在减less,积累分数(像往常一样)。

现在做一个查询instance > 0dict > 0 ,你有所有在两个单词。

  db.word.findOne() >{ word:'a_word', ... } db.dict.findOne() >{ word:'a_word', def:'def_of_a_word', ... } 

在单词中find单词。

 db.word.distinct('word') 

检查字典中是否存在a_word。

 db.dict.count({word:'a_word'}) // 0=not exist