我有两个非常大(30000+个文档)的集合,一个包含从文本文件中提取的单词(集合名称'word'),另一个包含来自字典的单词(集合名称'dictionary')。
如何获取两个集合中存在的单词?
(我简化了这种情况,'word'集合中的文档包含有关单词的元数据,因此每个单词必须是一个单独的文档。)
答案 0 :(得分:4)
将两个集合复制到一个集合中(如果需要,请包括一个鉴别器字段,以便您可以告诉每个实例中的文档类型。)
在该集合上运行map-reduce
在Map中,根据被映射的文档是实例还是字典条目,将单词作为键和值发出,例如{instance:1, dict:0}
或{instance:0, dict:1}
。 (您可以根据需要在此处添加更多字段。)
在减少中,累积分数(像往常一样)。
现在进行查询,查找instance > 0
和dict > 0
,并且您拥有两者中的所有字词。
答案 1 :(得分:-1)
让
db.word.findOne() >{ word:'a_word', ... }
db.dict.findOne() >{ word:'a_word', def:'def_of_a_word', ... }
在单词col中找到单词。
db.word.distinct('word')
检查dict col。
中是否存在a_worddb.dict.count({word:'a_word'}) // 0=not exist