我有一堆存储在MongoDB中的字段为Longs。当我查询我的集合时,它们以长整型返回。但是,当我将MapReduce执行到新的集合中并从那里检索数据时,它会作为浮点数返回。看起来尴尬的是必须将所有东西都转换为浮点数,然后获取Long值 - 有没有更好的方法?从Java中的MongoDB中检索long值
A sample object:
{ "_id" : 2836.0 , "value" : { "friends_count" : 788.0 , "followers_count" : 910.0 , "tweet_count" : 7791.0 , "screen_name" : "zzzzz" , "collected_at" : { "$date" : "2014-01-01T14:47:41.000Z"}}}
这里是我的地图和减少功能:我需要两个ID,所有的数值(除日期等)是朗斯:
String map = "function() { " +
"emit(this.user_id, { 'friends_count': this.friends_count, 'followers_count': this.followers_count, " +
"'tweet_count': this.tweet_count, 'screen_name': this.screen_name, 'collected_at': this.collected_at});}";
String reduce = "function(key, values) { " +
"var retval = values[0]; " +
"var latest = 0; "+
"for(var i in values){ " +
"if(values[i].collected_at > latest) { " +
"latest = values[i].collected_at; "+
"retval = values[i]; "+
" }} "+
"return retval;}";
您可能想要将您的accumulator变量声明为NumberLong(假设您正在使用内置的mapreduce) – evanchooly
我不知道该怎么做。编辑原始问题以包含我的地图并减少功能。 – betseyb
有一些样本输入文件? – evanchooly