0
我的java应用程序使用map-reduce从MongoDB集合中检索几个字符串<field's name, types>
。
比如我有:出现字段的文档数量 - MongoDB
<_id,ObjectId>
<name, String,Object>
<dateOfBirth, String,Date>
这意味着,在我的收藏有文件,其中_id
场只是一个ObjectId
,name
是String
或Object
和dateOfBirth
既可以是String
和Date
。
现在,我的目标是查找出现字段的文档数量。所以我写了这个Java方法
public int countFields(String s) {
DBObject query = new BasicDBObject(s,new BasicDBObject("$exists",1));
int n = coll.find(query).count();
return n;
}
此方法正确:在输入给出表示一个字段名称的字符串,它找到的地方串出现的文档数。 所以,每场我有这样的事情:
<_id, 500>
<name,340>
<dateOfBirth, 100>
这意味着_id
出现在我收藏的500个文件,name
在340和dateOfBirth
在100
假设我有运行此方法适用于集合中的所有字段:效率不高!
例如,在我的收藏中有大约30k个文档,我对每个字段s
运行countFields(s)
方法,并且它需要大约3秒来检索出现字段的文档数量。
如何才能在此查询上获得更好的性能?
好吧,你认为地图是降低复杂性方面更好? – DistribuzioneGaussiana
我没有配置文件,但我会这样认为。另外,如果您不需要所有字段,则可以将其限制为特定列表。 –
不幸的是我需要所有的字段,但我要测试map-redue。感谢您的建议。 – DistribuzioneGaussiana