mongodb mapreduce可以将发射保存到集合中吗?

时间:2017-04-26 10:14:43

标签: mongodb dictionary mapreduce

我创建了一个功能图,是这个

var m = function() { 
  hashtags = {}
  for(var i in this.entities.hashtags) {
    hashtags[this.entities.hashtags[i].text] = 1
  };
  var valor = {numtweets: 1 ,  
    dic_hastag: hashtags};
    print("  value: " + tojson(valor));
  emit(this.place.country_code, valor)
};

我从一个名为tweets的集合开始,我的map函数的输出应该有一个变量numtweets:1 和av ariable hastags与整个推文hastats的列表为1。 Nuwtweets:1,hastags:" hast1":1," hast2":2," hast3":1 1.-我可以将结果保存在一个集合中,以证明它运行良好而不是打印 2.-如果不是我必须做mapreduce,那么函数应该减少,为什么不做任何事情,所以当执行它时,map函数的输出

Db.runCommand ({
                       MapReduce: "tweets",
                       Map: m,
                       Reduce: r,
                       Query: {"place.country_code": "AD"},
                       Out: {replace: "resultat5fi"}
                     });

任何建议,帮助,欢迎任何事情。

1 个答案:

答案 0 :(得分:0)

我建议你看this

这是使用mongodb轻松调试地图功能的方法。

  1. 首先,像你一样创建你的地图功能

  2. 然后定义一个将打印(或插入集合)

  3. 的emit函数

    插入到toto集合中的emit函数示例。

    var emit = function(key, value) {
      db.toto.insert({key: key, value: value});
    }
    
    1. 调用查找功能并在每条记录上应用地图功能
    2. 示例:

      var myCursor = db.tweets.find( {} );
      
      while (myCursor.hasNext()) {
          var doc = myCursor.next();
          map.apply(doc);
          print();
      }
      
      1. 然后看看你的收藏
      2. 这样:

        db.toto.find()