mongodb(一)——mapreduce

Map-Reduce是一種計算模型圆雁,簡單的說就是將大批量的工作(數(shù)據(jù))分解(MAP)執(zhí)行亏镰,然后再將結(jié)果合并成最終結(jié)果(REDUCE)摧莽。
MongoDB提供的Map-Reduce非常靈活旺遮,以下是常用樣例:

1医寿、mongodb mapreduce 查詢集合中所有字段類型

db.runCommand({
    "mapreduce" : "collectionName",
    "map" : function () {
        for (var key in this) { 
            emit(key, this); 
        }
    },
    "reduce" :function (key, values) {
        var e = values[1][key];
        var r = typeof e;
       // js判斷數(shù)據(jù)類型 方法二
       // var a = Object.prototype.toString;
       // var r = a.call(e);
        return r;
    }, 
    "out": { inline : 1}
})

2栏赴、java 執(zhí)行mongodb mapreduce 的例子

import java.net.UnknownHostException;
 
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBObject;
import com.mongodb.MapReduceCommand;
import com.mongodb.MapReduceOutput;
import com.mongodb.MongoClient;
 
/**
 * Java + MongoDB MapReduce  count()
 * 
 */
public class MapReduce {
 
  public static void main(String[] args) {
 
    // Connect to mongodb
    MongoClient mongo = null;
    try {
        mongo = new MongoClient("localhost", 27017);
    } catch (UnknownHostException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
 
    // get database 
    // if database doesn't exists, mongodb will create it for you
    DB db = mongo.getDB("test");
 
    // get collection
    // if collection doesn't exists, mongodb will create it for you
    DBCollection collection = db.getCollection("person");
 
    String map ="function () {"+
            "emit('size', {count:1});"+
    "}";
 
    String reduce = "function (key, values) { "+
        " total = 0; "+
        " for (var i in values) { "+
            " total += values[i].count; "+
        " } "+
        " return {count:total} }";
 
    MapReduceCommand cmd = new MapReduceCommand(collection, map, reduce,
                     null, MapReduceCommand.OutputType.INLINE, null);
 
    MapReduceOutput out = collection.mapReduce(cmd);
 
    for (DBObject o : out.results()) {
        System.out.println(o.toString());
    }
    System.out.println("Done");
 
  }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市糟红,隨后出現(xiàn)的幾起案子艾帐,更是在濱河造成了極大的恐慌,老刑警劉巖盆偿,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件柒爸,死亡現(xiàn)場離奇詭異,居然都是意外死亡事扭,警方通過查閱死者的電腦和手機捎稚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來求橄,“玉大人今野,你說我怎么就攤上這事」夼” “怎么了条霜?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長涵亏。 經(jīng)常有香客問我宰睡,道長蒲凶,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任拆内,我火速辦了婚禮旋圆,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘麸恍。我一直安慰自己灵巧,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布抹沪。 她就那樣靜靜地躺著刻肄,像睡著了一般。 火紅的嫁衣襯著肌膚如雪采够。 梳的紋絲不亂的頭發(fā)上肄方,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天,我揣著相機與錄音蹬癌,去河邊找鬼。 笑死虹茶,一個胖子當(dāng)著我的面吹牛逝薪,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蝴罪,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼董济,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了要门?” 一聲冷哼從身側(cè)響起虏肾,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎欢搜,沒想到半個月后封豪,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡炒瘟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年吹埠,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片疮装。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡缘琅,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出廓推,到底是詐尸還是另有隱情刷袍,我是刑警寧澤,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布樊展,位于F島的核電站呻纹,受9級特大地震影響堆生,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜居暖,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一顽频、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧太闺,春花似錦糯景、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至钞澳,卻和暖如春怠惶,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背轧粟。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工策治, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人兰吟。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓通惫,卻偏偏與公主長得像,于是被迫代替她去往敵國和親混蔼。 傳聞我的和親對象是個殘疾皇子履腋,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,871評論 2 354

推薦閱讀更多精彩內(nèi)容

  • MongoDB的聚合操作主要是對數(shù)據(jù)的批量處理。一般都是將記錄按條件分組之后進(jìn)行一系列求最大值惭嚣,最小值遵湖,平均值的簡...
    AaronSimon閱讀 1,904評論 0 0
  • MapReduce介紹 MongoDB 中的MapReduce 使用JavaScript來作為查詢語言,因此能表達(dá)...
    持續(xù)進(jìn)步者閱讀 791評論 0 0
  • MapReduce 使用JavaScript作為“查詢語言”晚吞。因此它能夠表達(dá)任意復(fù)雜的邏輯延旧。然而,這種強大是有代價...
    AQ王浩閱讀 426評論 0 3
  • 初次試用了一下mongodb的mapreduce方法载矿,總結(jié)了一些粗淺的認(rèn)識垄潮,記錄如下: 下面例子中,documen...
    menglj閱讀 168評論 0 0
  • 在做聚合運算的時候闷盔,Map-reduce是個不錯的選擇弯洗;顧名思義:Map-reduce主要通過實現(xiàn)Map函數(shù)與re...
    小直閱讀 4,687評論 1 47